n阶数字回转方阵 ← 模拟法
【问题描述】
请编程输出如下数字回旋方阵。
【算法代码】
#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:
5out:1 2 9 10 254 3 8 11 245 6 7 12 2316 15 14 13 2217 18 19 20 21
*/