您的位置:首页 > 其它

求组合数模板

2016-03-03 08:13 288 查看
long long c[100][50];
void C(long long n,long long m)
{
long long i,j;
if(m>n/2)
m=n-m;
memset(c,0,sizeof(c));
for(i=0;i<=m;i++)
c[0][i]=c[1][i]=1;
for(i=0;i<=m;i++)
c[i][i]=1;
for(i=0;i<=n;i++)
c[i][0]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(i!=j)
c[i][j]=(c[i-1][j]+c[i-1][j-1]);
}
}
}


组合数取模

const int mod=10056;
int combine(int n,int m) //计算组合数C(n,m)
{
int sum=1; //线性计算
for(int i=1,j=n;i<=m;i++,j--)
{
sum=sum*j/i;
sum=sum%mod;
}
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: