母函数求组合情况模板

来源:互联网 发布:jdk 8u5 windows i586 编辑:程序博客网 时间:2024/06/14 12:53

求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;}


1 0
原创粉丝点击