Mr Zz

导航

HDUFruit

给你n种 水果 ,用来 拼盘拼出要含m种的盘子,每种水果都有上限和下限  变了点的母函数问题  

2 2//n  m

1 2//其中 一种下 上 限

1 2

3 5

0 3

0 3

0 3

代码 

/*
* Hoj2152.cpp
*
* Created on: 2011-10-15
* Author: Administrator
*/

#include<iostream>
#include<cstring>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int f[101][2];
int c1[10010];
int c2[10010];
int main(){
int n,m,i,j,k;
//memset(f,0,sizeof(f));

freopen("t.txt","r",stdin);

while(scanf("%d%d",&n,&m)!=EOF) {
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));

c1[0] = 1;

for(i = 0;i < n;i ++) {
scanf("%d%d",&f[i][0],&f[i][1]);
}
// 从第一个 式子开始计算 因为不知道后面水果的限制 必须要一个一个看才能确定 第一个式子
for(i = 0;i < n;i ++) {//n种水果
for(j = 0;j <= m;j++)//第一个式子的因子个数限制m
for(k = f[i][0];(j + k) <= m && k <= f[i][1];k ++) { //两个限制
c2[j + k] += c1[j];
}
for(j = 0;j <= m;j ++) {//每次把c1的参数更新 c2的参数初始化
c1[j] = c2[j];
c2[j] = 0;
}
}
printf("%d\n",c1[m]);
}
return 0;
}



posted on 2011-10-15 17:02  Mr Zz  阅读(146)  评论(0)    收藏  举报