排列组合 HDU - 1521 -指数型母函数

  • 排列组合

  • HDU - 1521
  • 一句话区分指数型母函数和母函数就是 母函数是组合数,指数型母函数是排列数
  • #include<bits/stdc++.h>
    using namespace std;
    #define maxn 12
    double ans[maxn],tp[maxn],inv[maxn];
    int n,m,a[maxn];
    void init()
    {
    inv[0]=1;
    for(int i=1; i<=11; i++)
    inv[i]=inv[i-1]*i;
    }
    int main()
    {
    init();
    while(~scanf("%d%d",&n,&m))
    {
    for(int i=1; i<=n; i++)
    scanf("%d",&a[i]);
    memset(ans,0,sizeof(ans));
    memset(tp,0,sizeof(tp));
    for(int i=0; i<=a[1]; i++)
    ans[i]=1/inv[i];
    for(int i=2; i<=n; i++)
    {
    for(int j=0; j<=m; j++)
    for(int k=0; k<=a[i]&&j+k<=m; k++)
    tp[j+k]+=ans[j]/inv[k];
    for(int j=0; j<=m; j++)
    ans[j]=tp[j],tp[j]=0;
    }
    printf("%.0lf\n",ans[m]*inv[m]);
    }
    return 0;
    }

      

上一篇:【hdoj_2152】Fruit(母函数)


下一篇:Libpci库的调用