HDOJ  2152   Fruit

来源:互联网 发布:百度世界人工智能大会 编辑:程序博客网 时间:2024/06/05 10:07

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2152

题目大意为:要买由M个水果组成的水果拼盘,不过我有个小小的要求,

对于每种水果,个数上我有限制,

既不能少于某个特定值,也不能大于某个特定值

而且我不要两份一样的拼盘。你随意搭配,你能组出多少种不同的方案

#include <stdio.h>
#include <string.h>
int c1[1010],c2[1010];
int main()
{
    inti,j,k,min[120],max[120];
    intN,M;
   while(scanf("%d%d",&N,&M)!=EOF)
    {
       for(i=1;i<=N;i++)
           scanf("%d%d",&min[i],&max[i]);
       for(i=0;i<=M;i++)
       {
           c1[i]=0;                           
           c2[i]=0;
       }
       for(i=min[1];i<=max[1];i++)
           c1[i]=1;
       for(i=2;i<=N;i++)
       {
           for(j=0;j<=M;j++)
           {
               for(k=min[i];k+j<=M&&k<=max[i];k++)
                   c2[j+k]+=c1[j];
           }
           for(j=0;j<=M;j++)
           {
               c1[j]=c2[j];
               c2[j]=0;
           }
       }
       printf("%d\n",c1[M]);
    }
    return0;
}

0 0
原创粉丝点击