题目描述:
打印一个螺旋矩阵,从右上角顺时针排列
输入格式:
一个整数n(n<=100)
输出格式:
一个n*n的矩阵
输入样例:
5
输出样例:
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
AC代码:
1 #include<cstdio> 2 3 using namespace std; 4 5 int a[105][105]; 6 7 inline void work(int n) { 8 int js = 1; 9 for(int i = 0;i < n / 2; i++) { 10 for(int j = i;j < n-1-i; j++) 11 if(a[j][n-1-i] == 0) 12 a[j][n-1-i] = js++; 13 for(int j = n-1-i;j > i;j--) 14 if(a[n-1-i][j] == 0) 15 a[n-1-i][j] = js++; 16 for(int j = n-1-i;j > i; j--) 17 if(a[j][i] == 0) 18 a[j][i] = js++; 19 for(int j = i;j < n-1-i; j++) 20 if(a[i][j] == 0) 21 a[i][j] = js++; 22 } 23 if(n % 2 == 1) 24 a[n/2][n/2] = js; 25 } 26 27 int main() { 28 int n; 29 scanf("%d",&n); 30 work(n); 31 for(int i = 0;i < n; i++){ 32 for(int j = 0;j < n; j++) 33 printf("%-4d ",a[i][j]); 34 printf(" "); 35 } 36 return 0; 37 }