zoukankan      html  css  js  c++  java
  • hdu1398 普通母函数的应用 解决多重集组合问题

      这个题的意思是给你1^2 2^2 3^2 ... 17^2这17个数, 为你组成i的方案数有多少个, 可以通过普通母函数来求解, 系数就代表方案数, (1+x+x^2+...x^300)(1+x^2+)..., 代码如下:

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    int num1[300+10], num2[300+10];
    
    void init()
    {
        for(int i=0; i<=300; i++)
            num1[i]=1, num2[i]=0;
        for(int i=2; i<=17; i++)
        {
            for(int j=0; j<=300; j++)  //aj*x^j * x^k
                for(int k=0; k+j<=300; k+=i*i)
                    num2[j+k] += num1[j];
            for(int i=0; i<=300; i++)
                num1[i]=num2[i], num2[i]=0;
        }
    }
    
    int main()
    {
        init();
        int n;
        while(cin>>n)
        {
            if(n==0) break;
            cout<<num1[n]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    C++官方文档-静态成员
    C++官方文档-this
    C++官方文档-运算符重载
    springboot-dokcer
    HDU 1073
    HDU 1070
    UVa 213
    HDU 1150
    POJ 1274
    POJ 2594
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5216955.html
Copyright © 2011-2022 走看看