您的位置:首页 > 其它

NYOJ 33 蛇形填数

2014-10-22 16:31 429 查看


蛇形填数

时间限制: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

;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: