codeup27972 迂回方阵
时空限制 1000ms/128MB
题目描述
输入整数N,输出相应方阵。
输入
一个整数N。( 0 < n < 20 )
输出
一个方阵,每个数字的场宽为4。
样例输入
5
样例输出
17 18 19 20 21
10 11 12 13 22
5 6 7 14 23
2 3 8 15 24
1 4 9 16 25
代码
#include<iostream>
#include<iomanip>
using namespace std;
const int N = 25;
int a[N][N];
int main(){
int n,x,y,k;
cin>>n;
x=n,y=0,k=0; //笔初始坐标
for (int i=1; i<=n; i++){
while (y+1<=i) a[x][++y]=++k;
while (x+1<=n) a[++x][y]=++k;
x=n-i; y=0; //每次迂回完,重置笔坐标
}
for (int i=1; i<=n; i++){
for (int j=1; j<=n; j++) cout<<setw(4)<<a[i][j];
cout<<endl;
}
return 0;
}