赞
踩
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- const int maxn =100; //物品最大件数
- const int maxv=1000;//V的上限
- int w[maxn],c[maxn],dp[maxv];
- int main()
- {
- int n,V;
- scanf("%d%d",&n,&V);
- for(int i=1;i<=n;++i)
- {
- scanf("%d",&w[i]);
- }
- for(int i=1;i<=n;++i)
- {
- scanf("%d",&c[i]);
- }
- //边界
- for(int v=0;v<=V;++v)
- {
- dp[v]=0;
- }
- //状态转移方程
- for(int i=1;i<=n;++i)
- {
- for(int v=V;v>=w[i];--v)
- {
- dp[v]=max(dp[v],dp[v-w[i]]+c[i]);
- }
- }
- //寻找最大的dp
- int ans=0;
- for(int i=0;i<=V;++i)
- {
- if(dp[i]>ans)
- {
- ans=dp[i];
- }
- }
- printf("%d\n",ans);
- return 0;
- }
- 测试数据:
- 输入:
- 5 8
- 3 5 1 2 2
- 4 5 2 1 3
- 输出 :
- 10
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。