题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2152
题目大意:给你N种水果,然后组合出满足条件的果盘,限制条件为每个果盘里特定水果的个数要满足题目限制;
解题思路:依旧模板
代码如下:
#include <stdio.h>
#include <string.h>
const int MAX=10005;
int c1[MAX],c2[MAX];
int main()
{
int N,M,s[102],e[102];//s为最少值,e为最大值
while(~scanf("%d%d",&N,&M))
{
for(int i=1; i<=N; i++)
scanf("%d%d",&s[i],&e[i]);
memset(c1,0,sizeof(c1));
c1[0]=1;
for(int i=1; i<=N; i++)//循环每个因子
{
memset(c2,0,sizeof(c2));
for(int j=s[i];j<=e[i]&&j<=M; j++)//每个因子的每一项
for(int k=0; k+j<=M; k++)//循环c1数组的每一项
c2[k+j] += c1[k];
memcpy(c1,c2,sizeof(c2));
}
printf("%d\n",c1[M]);
}
return 0;
}