关闭

母函数初识

标签: 算法
304人阅读 评论(0) 收藏 举报
分类:

母函数,一种用于解决拆分,组合问题的手段,实现了用简单的四则计算在计算机中模拟复杂的组合过程。



对于应用:5拆分成1,2,3,4的和的情况一共有多少种? 实现代码:

#include <iostream>
using namespace std;
int c1[100],c2[100];
int main()
{
    int i,j,k,n=5;
    for(i=0;i<=n;i++){
        c1[i]=1;
        c2[i]=0;
    }
    for(i=2;i<n;i++){
        for(j=0;j<=n;j++){
            for(k=0;k+j<=n;k+=i){
                c2[k+j]+=c1[j];//下标指指数,值是系数。加相当于乘,指数改变
            }
        }
        for(j=0;j<=n;j++){
            c1[j]=c2[j]; //更新c1,c2.-->A和研究的B改变了。
            c2[j]=0;
        }
    }
    //for(i=1;i<=n;i++)
    //cout<<c1[i]<<endl;
    cout<<c1[5]<<endl;
    return 0;
}
当规定1,2,3,4的可用个数是1时。母函数的形式作出相应的改变:G(x)=(1+x)(1+x^2)(1+x^3)(1+x^4)=1+x+x^2+2X^3+2X^4+2X^5+2X^6+2X^7+X^8+X^9+X^10, 可以看出,1,2 ,3,4可以组成和有: 1,2-----10,而x^5对应于2,所以有2种情况:1+4,2+3。

实现:

#include <iostream>
#include<algorithm>
using namespace std;
int c1[100],c2[100];
int main()
{
    int i,j,k,n=10;
    c1[0]=c1[1]=1;
    for(i=2;i<5;i++){
        for(j=0;j<=n;j++)c2[j]+=c1[j];
        for(j=0;j<=n;j++)c2[j+i]+=c1[j];
        for(j=0;j<=n;j++){
            c1[j]=c2[j];
            c2[j]=0;
        }
    }
    for(i=1;i<=n;i++)cout<<c1[i]<<endl;
    return 0;
}



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

母函数详解和史上最通用最高效的母函数模板

本文详细介绍母函数以及母函数在ACM竞赛中的解题方法,同时给出史上最通用最高效的母函数模板,非常实用,并且易于理解。本文还给出了一系列的例题帮助读者理解。
  • u012077163
  • u012077163
  • 2013-11-30 18:03
  • 7970

详解母函数与组合数

母函数与排列组合   在谈论母函数问题之前,我们先看一个简单的问题描述:假如有两组数据(A,B)和(C,D),每组中选出一个构成一个组合,总共有几种选法?很显然总共有4种选法:AC,AD,BC,...
  • tianyuhang123
  • tianyuhang123
  • 2016-10-28 19:04
  • 429

普通型母函数模板理解

今天学习了一下母函数的知识,感觉它像是专门做一类题用的。 推荐一个比较好的入门的母函数博客:http://www.wutianqi.com/?p=596 我写这篇文章的目的,就是为了再次总结一下他...
  • ACMer_hades
  • ACMer_hades
  • 2015-08-09 20:55
  • 950

组合数学之 母函数

母函数当中经典的问题  正是整数拆分  所谓整数拆分即把整数分解成若干整数的和(相当于把n个无区别的球放到n个无标志的盒子,盒子允许空,也允许放多于一个球)。 整数拆分成若干整数的和,办法...
  • u011699990
  • u011699990
  • 2014-11-14 21:25
  • 712

母函数法解决整数划分

问题描述:把一个整数n划分成1到n的划分,例如3可以划分为1+1+1,1+2,3这三种划分,那么求n的划分数。 解题思路:     可以把1,设为x的0次方:x^0     把1,设为x...
  • sxiaobei
  • sxiaobei
  • 2015-08-23 00:22
  • 1616

算法回忆录:母函数解决整数拆分

省略了很多内容,所以需要一定基础才可阅读。主要为了说清母函数如何解决此问题。 整数拆分: 1、整数拆分可以理解为苹果放盘子问题(把N个苹果放在M个盘子里有多少种方法),只是这是相当于把N个苹果放在...
  • u013293644
  • u013293644
  • 2016-04-26 15:57
  • 649

hdoj 1059 Dividing 【多重背包】||【优化母函数】

题意:每一种弹珠(marble)的都有各自的价值,第一种为1, 第二种为2,。。,给出你每种弹珠的数量,求能不能将价值总和均分。 策略:rt; 这道题比赛的时候没有想到用母函数,就用了多重背包来解...
  • shengweisong
  • shengweisong
  • 2014-08-17 12:02
  • 822

普通型母函数原理及模板代码详解

普通型母函数的原理详解和模板代码详解。
  • zuzhiang
  • zuzhiang
  • 2017-09-12 18:25
  • 157

母函数理解及整数拆分

母函数的定义以及整数拆分模板 母函数(Generating function)详解 分类: 母函数 2012-08-12 20:33 899人阅读 评论(0) 收藏 举报 ...
  • fsqfang
  • fsqfang
  • 2014-08-04 11:21
  • 619

母函数及其应用

转自http://blog.csdn.net/ydykl/article/details/6655142 网上找的一篇讲组合数学的文章,讲的很不错    先来说一说母函数,今天是...
  • EzCUfST
  • EzCUfST
  • 2015-07-28 15:59
  • 690
    个人资料
    • 访问:330265次
    • 积分:8842
    • 等级:
    • 排名:第2517名
    • 原创:575篇
    • 转载:13篇
    • 译文:0篇
    • 评论:36条
    我的链接
    最新评论