这个题主要是要细心。我们可以把它看成一个三角形一层层的循环就好了
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;
}
转载请注明原文地址: https://www.6miu.com/read-27816.html