最简单的背包 直接上代码吧 .
1 #include<stdio.h>
2 #include<string.h>
3 #include<math.h>
4 #include<iostream>
5 #include<algorithm>
6 #include<queue>
7 #include<vector>
8 #include<set>
9 #include<stack>
10 #include<string>
11 #include<sstream>
12 #include<map>
13 #include<cctype>
14 #include<limits.h>
15 using namespace std;
16 #define LEN 1005
17 int c[LEN],w[LEN],dp[LEN];
18 int main()
19 {
20 int n,V;
21 while(scanf("%d%d",&n,&V)&&!(n==V&&n==0))
22 {
23 for(int i=0;i<n;i++)
24 scanf("%d%d",&c[i],&w[i]);
25 memset(dp,0,sizeof(dp));
26 for(int i=0;i<n;i++) //一个个的 苹果
27 {
28 for(int j=V;j>=0;j--)
29 {
30 if(j<c[i])
31 continue;
32 dp[j]=dp[j]>dp[j-c[i]]+w[i]?dp[j]:dp[j-c[i]]+w[i];
33 }
34 }
35 printf("%d
",dp[V]);
36 }
37 return 0;
38 }