蛇形填数(二)
时间限制: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<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; }
时间: 2024-10-03 22:27:27