母函数求组合情况模板

原创 2016年08月30日 20:04:43

求maxlim之内的组合情况数

#include<stdio.h>
#include<string.h>
#define element 27 //元素的种类数
#define maxlim 52  //价格限制
int c1[maxlim],c2[maxlim];
int main()
{
    int n;
    int i,j,k;
    int sum;
    int a[element]= {0};
    scanf("%d",&n);
    while(n--)
    {
        for(i=1; i<element; i++)  //输入每种商品的个数
            scanf("%d",&a[i]);
        memset(c2,0,sizeof(c2));
        memset(c1,0,sizeof(c1));
        for(i=0; i<maxlim&&i<=a[1]; i++)
            c1[i]=1;

        for(i=2; i<=element; i++)
        {
            for(j=0; j<maxlim; j++)
            {
                for(k=0; k+j<maxlim&&k<=a[i]*i/**限制大小为i元素可提供的最大值*/; k+=i)
                    c2[k+j]+=c1[j];
            }
            for(j=0; j<maxlim; j++)
            {
                c1[j]=c2[j];
                c2[j]=0;
            }
        }/**到这可以求出可以组合到该数字有多少种情况*/

        /**中间为核心代码,c1数组里存了所有和有多少种情况*/
        sum=0;
        for(i=1; i<maxlim; i++)
            sum+=c1[i];
        printf("%d\n",sum);
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

母函数模板---解决组合数问题

母函数,又称生成函数,是ACM竞赛中经常使用的一种解题算法,常用来解决组合方面的题目。 母函数通常解决类似如下的问题: (1)给5张1元,4张2元,3张5元,要得到15元,有多少种组合? (2...

[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(3)]模板函数指针的的各种组合以及调用的方式

// function.cpp : /* 测试例子演示了函数指针的的各种组合以及调用的方式 如果你的编译器编译失败,请尽可能的先去掉 const 后编译,如果全部去掉后 还是编译失败,请把你的编译器升...
  • hzhxxx
  • hzhxxx
  • 2013年08月12日 16:50
  • 1099

bjfuOJ 1017组合的字典序(模拟求直接后继,分情况讨论)

组合的字典序 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:51            测试通过:28 描述 一...

pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!

介绍        Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制,然而真正的把含有多音字、数字、字母的中文句子转成拼音得到所有的组合情况却有很大难度,我看...

VB 函数嵌套求组合数

  • 2010年06月07日 14:52
  • 37KB
  • 下载

组合数学-母函数-与递推关系

  • 2015年09月22日 16:43
  • 1.83MB
  • 下载

【C++解题报告】求组合数(定义函数)

题目来源:     基础班《函数、递归、递推》,函数第2题。 题目描述:     用定义函数的方式,输入非负的整数n和m,输出组合数C。 输入格式:         输入n,m。 输出格...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:母函数求组合情况模板
举报原因:
原因补充:

(最多只允许输入30个字)