ACM_模板_指数型母函数

普通型母函数主要是来求组合的方案数,而指数型母函数是求多重排列数。

这里小编引用百度百科上的对指数型母函数的讲解。

http://baike.baidu.com/link?url=061wn8F8bePtWezmn3YEo9mVTmLDTNH0G0W7J4AbXOYUB3O3nmSaglcDtUTgC14Is3YVGaGFkt1Tam8j4VjtvTslVVDWbpb9fjRn0qWhAizvOUDDfTQdN46Y87t3ZAeoBdLvjaRGrVnK8BEGfPLx-_

#include <stdio.h>//指数型母函数 
int jcs[15];
int main ()
{
	jcs[0]=1;
    for(int i=1;i<=12;i++)
    	jcs[i]=jcs[i-1]*i;
    double c1[15],c2[15];
    int c[15];
    int m,n,i,j,k;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(i=1;i<=n;i++)
        	scanf("%d",&c[i]);
        for(i=0;i<=n;i++)
        {
        	c1[i]=c2[i]=0;
        }
		c1[0]=1.0/jcs[0];
		for(i=1;i<=n;i++)
		{
	   		for(j=0;j<=m;j++)
	   			for(k=0;k+j<=m&&k<=c[i];k++)
	   				c2[k+j]+=c1[j]/jcs[k];
	   		for(j=0;j<=m;j++)
	   			c1[j]=c2[j],c2[j]=0;
        }
	 	printf("%.0f\n",c1[m]*jcs[m]);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值