350. 小吃店
★☆ 输入文件:food.in
输出文件:food.out
简单对比时间限制:1 s 内存限制:256 MB
小吃店
【背景】
【问题描述】
【输入文件】
接下来n行每行二个整数ai,bi。
【输出文件】
【输入输出样例】
food.in 4 3 2 2 1 3 2 1 1 2 1
food.out 3
{1,3}、{2}和{3,4} (这里的数字表示第几对)
【数据范围】
对于100%数据, 0<=n<=50; 0<=m,w<=2,500
对于 100%数据,0<=ai,bi<=100
保证运算和输出不会超过maxlongint
#include <iostream>
#include <cstdio>
using namespace std;
#define MAX_N 2501
#define INF -999999
int n,m,w;
int dp[MAX_N][MAX_N];
int a[MAX_N],b[MAX_N];
int main()
{
freopen("food.in","r",stdin);
freopen("food.out","w",stdout);
scanf("%d%d%d",&n,&m,&w);
for(int i=0;i<n;i++) scanf("%d%d",&a[i],&b[i]);
for(int i=0;i<=m;i++)
dp[0][0]=1;
for(int i=0;i<n;i++)
{
for(int j=m;j>=a[i];j--)
{
for(int k=w;k>=b[i];k--)
{
dp[j][k]+=dp[j-a[i]][k-b[i]];
}
}
}
printf("%d\n",dp[m][w]);
return 0;
}