蛇形填数 (二)

蛇形填数(二)

时间限制: 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
#include<iostream>
#include<string.h>
using namespace std;
#define MAX 1000
int a[MAX][MAX];
int main(void){
	int n,x,y,s,count;
	cin>>s;
	while(s--){
		cin>>n;
		memset(a,0,sizeof(a));
		count=a[x=0][y=0]=1;
		while(count<n*(n+1)/2){
			while(y+1<n&&!a[x][y+1])a[x][++y]=++count;
			while(x+1<n&&!a[x+1][y-1])a[++x][--y]=++count;
			while(x-1>=0&&!a[x-1][y])a[--x][y]=++count;
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n-i;j++)
			cout<<a[i][j]<<" ";
			cout<<endl;
		}
		cout<<endl;
	}
}

你可能感兴趣的:(蛇形填数)