杨辉三角中,边界的值是1,除了边界之外任意一个元素都是其左上方和右上方元素之和。利用这个特性,我们可以很容易的利用二维数组来生成杨辉三角。
c++代码如下。
void yanghui(int n){
//initialize array
for(int i=0;i<MAX;i++){
for(int j=0;j<MAX;j++)c[i][j]=0;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++){
if(j==1||j==i)c[i][j]=1;
else{
c[i][j]=c[i-1][j-1]+c[i-1][j];
}
}
}
}
杨辉三角还有一个特性,它的第n+1行第m+1列的元素值为C(n,m)
例如C(4,2)=6 j就是第五行第三列的元素。
如果需要大量重复的计算组合数,这种方法是最适合的。这种方法只需要计算一次(打表)就能得到所有需要的数据。在大量运算的时候可以大幅度提高效率