题目描述
给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。
从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。
输入
4
输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
参考代码
#include<bits/stdc++.h>
using namespace std;
int n,x=1,y=0,k=1,arr[15][15];
int main()
{
cin>>n;
while(k <= n*n){
while((y+1)<=n && !arr[x][y+1])//没有越界和没有填数,向右
arr[x][++y] = k++;
while((x+1)<=n&&!arr[x+1][y]){//向下
arr[++x][y]=k++;
}
while((y-1)>=1&&!arr[x][y-1]){
arr[x][--y] = k++;
}
while((x-1)>=1&&!arr[x-1][y]){
arr[--x][y] = k++;
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j<=n ; j++){
printf("%3d",arr[i][j]);
}
cout<<endl;
}
return 0;
}