【问题描述】
请编程输出如下数字回旋方阵。
【算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=100;
int z[maxn][maxn];
void matrix(int n) {
int num=2;
z[0][0]=1;
int i=0,j=1;
while(i<n && j<n) {
while(i<j) z[i++][j]=num++;
while(j>=0) z[i][j--]=num++;
i++;
j=0;
while(i>j) z[i][j++]=num++;
while(i>=0) z[i--][j]=num++;
j++;
i=0;
}
}
int main() {
int n;
cin>>n;
matrix(n);
cout<<setw(4);
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++)
cout<<z[i][j]<<setw(4);
cout<<endl;
}
cout<<endl;
return 0;
}
/*
in:
5
out:
1 2 9 10 25
4 3 8 11 24
5 6 7 12 23
16 15 14 13 22
17 18 19 20 21
*/