南陽OJ 852題 蛇形填數(二)
阿新 • • 發佈:2019-02-19
這個題主要是要細心。我們可以把它看成一個三角形一層層的迴圈就好了
#include<stdio.h>
int a[1000][1000];
void F(int n,int m){
int i,j;
if(m>=n/2)
return;
for(i=1+m;i<=n-m*2;i++)
a[m+1][i]=a[m+1][i-1]+1;//計算三角形的長
for(i=m+2,j=0;i<=n-m*2;j++,i++)
a[i][n-1-2*m-j]=a[i-1][n-2*m-j]+1;// 計算三角形的斜邊
for (i=n-1-m*2;i>m+1;i--)
a[i][m+1]=a[i+1][m+1]+1;//計算三角形的高
F(n,m+1);
}
int main(){
int n,m,i,j;
a[1][0]=0;
scanf("%d",&m);
while(m--){
scanf("%d",&n);
a[1][1]=1;
F(n,0);
for(i=1;i<=n;i++){
printf("%d",a[i][1]);
for (j=2;j<=n+1-i;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
return 0;
}