杨辉三角与二项式定理(排列与组合) By ACReaper
由帕斯卡恒等式我们可以很轻易的总结出杨辉三角形的规律,其实这个三角形也叫帕斯卡三角形。
帕斯卡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; }