蛇形填数
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
-
输入
- 直接输入方陈的维数,即n的值。(n<=100) 输出
- 输出结果是蛇形方陈。 样例输入
-
3
样例输出
-
7 8 1 6 9 2
5 4 3
-
-
-
程序如下:
-
#include<cstdio> #include<cstring> using namespace std; int main() { int n; scanf("%d",&n); int a[n][n]; memset(a,0,sizeof(a)); //全部初始化为0,方便标记; int k=1; int x=0,y=n-1; a[x][y]=1; //起始位置为1; while(k<n*n) { while(a[x+1][y]==0&&x+1<n) //下 a[++x][y]=++k; while(a[x][y-1]==0&&y-1>=0) //左 a[x][--y]=++k; while(a[x-1][y]==0&&x-1>=0) //上 a[--x][y]=++k; while(a[x][y+1]==0&&y+1<n) //右 a[x][++y]=++k; } for(int i=0; i<n; i++) for(int j=0; j<n; j++) printf("%d%c",a[i][j],j==n-1?'\n':' '); return 0; }