地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=289
思路:同NYOJ 49 开心的小明 动态规划问题dp
代码如下:
1 #include <stdio.h>
2 #include <string.h>
3 #define N 1001
4 int dp[N];
5 int c[N],w[N];
6 int max(int x,int y)
7 {
8 return x>y?x:y;
9 }
10 int main()
11 {
12 int n,v,i,j;
13 while (scanf("%d%d",&n,&v)&&(n||v))
14 {
15 for(i=0;i<n;i++)
16 scanf("%d%d",&c[i],&w[i]);
17 memset(dp,0,sizeof(dp));
18 for(i=0;i<n;i++)
19 {
20 for(j=v;j>=c[i];j--)
21 {
22 dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
23 }
24 }
25 printf("%d\n",dp[v]);
26 }
27 return 0;
28 }