您的位置:首页 > 其它

NYOJ 33 蛇形填数

2014-04-11 08:23 330 查看
描述 在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

永远走的方向永远是 ↓ ← ↑ →  。判断是否要改变方向的办法是 :把数组初始化为0,当遇到不为0的数时,就是时候改变方向了。(全局数组系统会自动初始化为0,否则要用memset()).。用now来存放现在该放的值,当now=n*n 时,结束。

 

#include <stdio.h>

int snack[100][100];

int main()
{
int n;
scanf("%d",&n);
int i=0,j=n-1;
int now=0;
int sign=1;

while(now<n*n)
{
while( !snack[i][j]  && i<n	)			//向下
snack[i++][j]=++now;
i--;
j--;
while( !snack[i][j] && j>=0 )			//向左
snack[i][j--]=++now;
j++;
i--;
while( !snack[i][j] && i>=0 )			//向上
snack[i--][j]=++now;
i++;
j++;
while(  !snack[i][j] &&j<n  )			//向右
snack[i][j++]=++now;
j--;
i++;

}

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",snack[i][j]);
printf("\n");
}

return 0;

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