蛇形填数
时间限制:
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> # define N 100 int P[N][N]; void Fill(int number, int high,int begin, int size) { if (size <= 0) return ; if (size == 1) P[high][begin] = number; int i; int h = high,v = begin; P[h][v] = number;number++; //先填好最右上角的数 for (i = 0; i<size - 1; i++ ) //往下 { h++; P[h][v] = number;number++; } for (i=0; i<size-1; i++) //往左 { v--; P[h][v] = number;number++; } for (i = 0; i< size-1; i++) //往上 { h--; P[h][v] = number;number++; } for (i= 0; i<size-2;i++) //往右 { v++; P[h][v] = number;number++; } Fill(number,h+1,v,size -2); //调用递归算法 } int main(void) { int n,h,v; scanf("%d", &n); Fill(1,0,n-1,n); for (h = 0; h<n;h++) //输出 { for (v= 0; v<n; v++) printf("%d ",P[h][v]); printf("\n"); } return 0; }