蛇形填数
时间限制: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> #include<string.h> int main(){ int n ,val = 1; scanf("%d",&n); int k = n*n,i = 1,j = n; int a[n+5][n+5]; memset(a,0,sizeof(a)); a[1][n] = 1; while(val<k){ while(i < n && !a[i+1][j]) a[++i][j] = ++val; while(j > 1 && !a[i][j-1]) a[i][--j] = ++val; while(i > 1 && !a[i-1][j]) a[--i][j] = ++val; while(j < n && !a[i][j+1]) a[i][++j]= ++val; } for(i = 1;i <= n;i++){ for(j = 1;j <= n;j++){ if(j == n) printf("%d ",a[i][j]); else printf("%d ",a[i][j]); } } }