下面介绍两种方法
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;
}