codeup22106 蛇形矩阵
时空限制 1000ms/128MB
题目描述
生成一个按蛇形方式排列自然数1,2,3,4,5,……,N2的 (1<N≤100)阶方阵。例如:N=4
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
输入
正整数N。
输出
蛇形矩阵。
样例输入
4
样例输出
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
代码
#include<iostream>
using namespace std;
const int N = 105;
int a[N][N];
int main(){
int n,x,y,k;
cin>>n;
a[x=1][y=1] = k = 1;
while (k<n*n){
if (x<n) a[++x][y]=++k;
else a[x][++y]=++k;
while (x-1>=1 && y+1<=n) a[--x][++y]=++k;
if (y<n) a[x][++y]=++k;
else a[++x][y]=++k;
while (x+1<=n && y-1>=1) a[++x][--y]=++k;
}
for (int i=1; i<=n; i++){
for (int j=1; j<n; j++) cout<<a[i][j]<<" ";
cout<<a[i][n]<<endl;
}
return 0;
}