栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

输入N, 打印 N*N 矩阵

输入N, 打印 N*N 矩阵

比如 N = 3,打印:
1 2 3
8 9 4
7 6 5
N = 4,打印:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
1 #define N 15
int s[N][N];
void main()
{
int k = 0, i = 0, j = 0;
int a = 1;
for( ; k < (N+1)/2; k++ ){while( j < N-k ) s[i][j++] = a++; i++; j--;while( i < N-k ) s[i++][j] = a++; i--; j--;while( j > k-1 ) s[i][j–] = a++; i–; j++;
while( i > k ) s[i–][j] = a++; i++; j++;
}
for( i = 0; i < N; i++ ){for( j = 0; j < N; j++ )cout << s[i][j] << 't';cout << endl;}}2 define MAX_N 100int matrix[MAX_N][MAX_N]; void SetMatrix(int x, int y, int start, int n) {int i, j; if (n <= 0) //递归结束条件return;if (n == 1) { //矩阵大小为1时matrix[x][y] = start;return;}for (i = x; i < x + n-1; i++) //矩阵上部matrix[y][i] = start++; for (j = y; j < y + n-1; j++) //右部matrix[j][x+n-1] = start++; for (i = x+n-1; i > x; i–) //底部
matrix[y+n-1][i] = start++;
for (j = y+n-1; j > y; j–) //左部
matrix[j][x] = start++;
SetMatrix(x+1, y+1, start, n-2); //递归
}
void main() {
int i, j;
int n;
scanf(“%d”, &n);
SetMatrix(0, 0, 1, n);
//打印螺旋矩阵
for(i = 0; i < n; i++) {for (j = 0; j < n; j++)printf("%4d", matrix[i][j]);printf("n");}}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265500.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号