zoukankan      html  css  js  c++  java
  • 母函数

    以几个几克砝码为例

    1+x^2+x^4表示有2个2g砝码

    1+x^3+x^6表示2个3g砝码

    1+x^3+x^6+ x^9表示有3个3g砝码

    问这些砝码有几种不一样的重量

     f ( x ) = (1+x^2+x^4)×(1+x^3+x^6)×(1+x^3+x^6+ x^9)

    得出结果有几个x就有几种不一样的重量

    hdu2082典型的母函数问题

    代码如下

    #include <bits/stdc++.h>
    
    using namespace std;
    
    typedef long long LL;
    
    int main() {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        int N;
        scanf("%d",&N);
        LL a[60], b[60];//存放的是系数
        while(N--) {
            int num;
            int i, j, k;
            for(i = 0; i <= 60; i++) {
                a[i] = b[i] = 0;
            }
            a[0] = 1;
            for(i = 1; i <= 26; i++) {
                scanf("%d",&num);
                if(num == 0) continue;
                for(j = 0; j <= 50; j++)//这两个for比较关键k*i+j,j,i代表的是指数
                    for(k = 0; k <= num && k*i+j <= 50; k++)
                        b[k*i+j] += a[j];
                for(j = 0; j <= 50; j++) {
                    a[j] = b[j];
                    b[j] = 0;
                }
            }
            LL total = 0;
            for(int i = 1; i <= 50; i++) 
                total += a[i];
                printf("%lld
    ",total);
        }
        return 0;
    }

    整数的拆分的母函数代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    typedef long long LL;
    
    int main() {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        int N;
        while(scanf("%d",&N) != EOF ) {
            LL a[60], b[60];//存放的是系数
            int i, j, k;
            for(i = 0; i <= N; i++) {
                a[i] = 1;
                b[i] = 0;
            }
            for(i = 2; i <= N; i++) {
                for(j = 0; j <= N; j++)//这两个for比较关键k*i+j,j,i代表的是指数
                    for(k = 0; k*i+j <= N; k++)
                        b[k*i+j] += a[j];
                for(j = 0; j <= N; j++) {
                    a[j] = b[j];
                    b[j] = 0;
                }
            }
            printf("%lld
    ",a[N]);
        }
        return 0;
    }
  • 相关阅读:
    WordCount C语言实现求文本的字符数,单词数,行数
    iOS 数据持久化
    Apple store加急审核
    iOSTableViewCell不等高的几种方法
    Xcode 插件(时间就是生命)
    iOS UI组件汇总
    iOS之获取经纬度并通过反向地理编码获取详细地址
    iOS 开发常用宏
    iOS让你的app一直在后台活着(运行)
    OC动画——基础动画CABasicAnimation使用
  • 原文地址:https://www.cnblogs.com/creativepower/p/6802423.html
Copyright © 2011-2022 走看看