需要注意题目所提供的目标三角形形状,若去掉下面代码中的注释,最后打印的三角形是对称的。
#include<stdio.h>
#define N 100
int main(){
int n;
scanf("%d",&n);
int a[N][N];
for(int i=0;i<n;i++){
/*for(int k=0;k<n-i-1;k++)
printf(" ");*/
for(int j=0;j<=i;j++){
if(j==0||i==j)
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d",a[i][j]);
if(i==j)
printf("\n");
}
}
return 0;
}
最后,附上二维数组存储杨辉三角的具体情形。参考链接
很显然可以用二维数组a[i][j]来表示三角形矩阵
a[0][0]
a[1][0] a[1][1]
a[2][0] a[2][1] a[2][2]
a[3][0] a[3][1] a[3][2] a[3][3]
观察,易得知:a[i][j] = a[i-1][j-1] + a[i-1][j]
同时要注意数组下表不能越界,故有:
i-1<n ——>i<n-1
j-1<n ——>j<n-1