#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100;
const int maxv=1000;
int w[maxn],c[maxn],dp[maxv];
int main(){
int n,V;
scanf("%d%d",&n,&V);
for(int i=0;i<n;i++){
scanf("%d",&w[i]);
}
for(int i=0;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]);
}
}
int max=0;
for(int v=0;v<=V;v++){
if(dp[v]>max){
max=dp[v];
}
}
printf("%d\n",max);
return 0;
}
0/1背包问题算法实现:
优化算法:动态规划解决背包问题
最新推荐文章于 2025-07-28 00:15:00 发布
本文介绍了一种使用动态规划解决0-1背包问题的C++代码实现。通过递推计算,找出在给定物品价值和容量限制下,能获得的最大总价值。重点讲解了如何利用贪心策略更新状态转移方程和求解过程。
777

被折叠的 条评论
为什么被折叠?



