题目描述
给出一个不大于 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; }