nyoj 852 蛇形填数(二)【循环+数组】

蛇形填数(二)

时间限制: 2000 ms  |  内存限制: 65535 KB
难度: 3
描述
1  2  3  4  5
12 13 14 6
11 15 7
10 8
9
跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开
输入
第一行有一个N,表示N组测试数据
接下来每组数据包括一个数字X,表示三角形的边长,0< X <1000
输出
输出之后填好之后的图
样例输入
2
5
4
样例输出
1  2  3  4  5
12 13 14 6
11 15 7
10 8
9

1  2  3  4
9  10 5
8  6
7
来源
NBOJ
上传者
勿念情

思路:

        通过while语句来控制走向(右,左下,上),然后每走一步变量t加1,最终给定范围的每一个方格都填满对应的数为止!

代码:

#include 
#include 
int a[1005][1005];
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		memset(a,0,sizeof(a));
		int n;
		scanf("%d",&n);
		int x=0,y=0,t=1;
		a[0][0]=1;
		int u=n*(n+1)/2;
		int i,j;
		while(t=0&&x+1=0&&!a[x-1][y]) //上
			        a[--x][y]=++t;//向上移动的时候,要保证行数不小于0! 
        }
            for(int i=0;i



 

你可能感兴趣的:(基础算法)