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