zoukankan      html  css  js  c++  java
  • hdu1521 指数型母函数 求解多重集排列数

      题意是给你n个物品, 每个物品有ai个, 从中选取m个物品的排列数是多少??这个问题可以使用指数型母函数来解决。。代码如下:

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    int f[15];
    void initf()
    {
        f[0] = 1;
        for(int i=1; i<=11; i++) f[i] = i*f[i-1];
    }
    int n, m;   //n个物品选出m件
    int a[20];  //每件物品的数量
    double c1[20], c2[20];
    
    int main()
    {
        initf();
        while(cin>>n>>m)
        {
            for(int i=1; i<=n; i++) cin>>a[i];
            memset(c2, 0, sizeof(c2));
            memset(c1, 0, sizeof(c1));
            for(int i=0; i<=a[1]; i++) c1[i]=1.0/f[i];
            for(int i=2; i<=n; i++)
            {
                for(int j=0; j<=10; j++)
                    for(int k=0; k<=a[i]; k++) if(j+k<=10)
                            c2[j+k] += c1[j]/f[k];
                for(int j=0; j<=10; j++) c1[j]=c2[j], c2[j]=0;
            }
            //cout<<(int)c1[m]*f[m]<<endl;
            printf("%.0f
    ", c1[m]*(double)f[m]);
        }
        return 0;
    }
  • 相关阅读:
    DAY9 函数初识(各种参数的用法)
    CSS背景
    HTML/CSS 练习
    从JDBC到commons-DBUtils
    SQL
    MYSQL数据库基本操作
    JDBC
    Stream数据流(Collection接口扩充)
    Stack栈
    Map集合接口
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5217495.html
Copyright © 2011-2022 走看看