下面介绍两种方法
1.利用上面性质的第五条,我们可以求各行各列的组合数
2.利用上面性质的第7条,我们可以用数组完成
下面附上代码
1.
#include<stdio.h>
void fact(int n ,int m )//求组合数
{long long int sum1=1;long long int sum2=1;int a=n;int b=m;for(int i=1;i<=m;i++)//A(n,m){sum1=sum1*a;a--;}for(int j=1;j<=m;j++)//m!{sum2=sum2*b;b--;}long long int sum=sum1/sum2;printf("%lld ",sum);
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){fact(i-1,j-1);}printf("\n");}return 0;
}
大家不知道组合数怎么求可以看我之前文章,这个代码有弊端,数字过于大时候会产生错误,欢迎大佬指出问题
2.
#include<stdio.h>
int main()
{int n;int arr[50][50];scanf("%d",&n);for(int i=1;i<=n;i++){for(int k=1;k<=i;k++){if(k==1||k==i){arr[i][k]=1;}else{arr[i][k]=arr[i-1][k]+arr[i-1][k-1];}printf("%d ",arr[i][k]);}printf("\n");}return 0;
}