标签:nyoj蛇形填数二
1 2 3 4 5 12 13 14 6 11 15 7 10 8 9跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开
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<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int max=1005;
int a[max][max];
int main()
{
int n,k,i,j,l,sign;
scanf("%d",&k);
while(k--){
scanf("%d",&n);
memset(a,0,sizeof(a));
a[0][0]=1;
i=j=0;
l=n;
sign=0;
if(n==1){
printf("1\n");
printf("\n");continue;
}
while(1){
sign=1;
while(1){
if(a[i][j+1]!=0){break;}
a[i][++j]=a[i][j-1]+1;
if(j==n-1)break;
sign=0;
}
while(1){
if(a[i+1][j-1]!=0){break;}
a[++i][--j]=a[i-1][j+1]+1;
if(i==n-1)break;
sign=0;
}
while(1){
if(a[i-1][j]!=0){break;}
a[--i][j]=a[i+1][j]+1;
sign=0;
}
if(sign)break;
}
for(i=0;i<l;++i){
for(j=0;j<l-i;++j)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
}
return 0;
} 标签:nyoj蛇形填数二
原文地址:http://blog.csdn.net/r1986799047/article/details/43486167