一、个人理解
第一列都为1,后续每一列的值,都为上方的值加上上方左侧的值。
二、举例
杨辉三角:
1
1 1
1 2 1
1 3 3 1
可以变成一下方式更好理解一些:
1 0 0 0
1 1 0 0
1 2 1 0
1 3 3 1
(1)第二行的第二个1,等于上方的0加上上方的0的左侧的1。
(2)第三行的第二个2,等于上方的1加上上方的0的左侧的1。
(3)以此类推得出所有值。
三、需求
打印前12行的杨辉三角。
四、源码
#include<stdio.h>
#define NUM 12
void main()
{
int a[NUM][NUM];
int i,j;
for(i=0;i<NUM;i++)
{
for(j=0;j<NUM;j++)
{
if(j==0)
{
a[i][j] = 1;
}
else
{
a[i][j] = 0;
}
}
}
for(i=1;i<NUM;i++)
{
for(j=1;j<=i;j++)
{
a[i][j] = a[i-1][j] + a[i-1][j-1];
//printf("%3d",a[i][j]);
}
//printf("\n");
}
for(i=0;i<NUM;i++)
{
for(j=0;j<=i;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
五、运行结果