由帕斯卡恒等式我们可以很轻易的总结出杨辉三角形的规律,其实这个三角形也叫帕斯卡三角形。
帕斯卡i恒等式:
即(n + 1)(k) = (n)(k) + (n)(k - 1),这个恒等式很好证明也很容易理解,我们采用组合证明来证明它,对于某集合有n + 1个元素,求其有k个元素的子集个数即为(n + 1)(k),我们假设a是这个集合的元素,则a要么选进这k个元素,要么不选,根据加法定理就有(n + 1)(k) = (n)(k) + (n)(k - 1),成立。
我们观察杨辉三角形后,也会有这样的发现,于是可以建立一个二维数组,就按照A[n + 1][k] = A[n][k] + A[n][k - 1]来递推,就可以构造出杨辉三角形。
#include <stdio.h>
#include <string.h>
#define MAXN 1000
int A[MAXN][MAXN];
int main(){
int n;
while(scanf("%d",&n) != EOF){
memset(A,0,sizeof(A));
for(int i = 0; i <= n;i++){
A[i][0] = 1;
for(int j = 1;j<= i;j++)
A[i][j] = A[i - 1][j] + A[i - 1][j - 1];
}
int space_number = n;
for(int i = 0; i <= n; i++){
for(int i = 1; i <= space_number;i++)
printf(" ");
space_number--;
for(int j = 0; j <= i; j++){
printf("%d ",A[i][j]);
}
printf("\n");
}
}
return 0;
}