连接: http://acm.nyist.net/JudgeOnline/problem.php?pid=33
蛇形填数
时间限制:
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<stdio.h> int p[120][120]; int main() { int n,i,j,step,term,x,y; while(~scanf("%d",&n)) { i=1;j=n;step=n-1;term=1; while(step>0) { for(x=i;x<i+step;x++)p[x][j]=term++; i=i+step; for(y=j;y>j-step;y--)p[i][y]=term++; j=j-step; for(x=i;x>i-step;x--)p[x][j]=term++; i=i-step; for(y=j;y<j+step;y++)p[i][y]=term++; j=j+step; i++;j--; step-=2; } p[i][j]=n*n; for(i=1;i<=n;i++) { printf("%d",p[i][1]); for(j=2;j<=n;j++) printf(" %d",p[i][j]); printf("\n"); } } return 0; }