题目:0-1背包
代码:
#include<iostream>
#include<sstream>
#include<string>
#include<cstring>
#include<set>
#include<fstream>
using namespace std;
int dp[1001];
int vol[1001],va[1001];
int max(int a,int b){
if(a>b) return a;
else return b;
}
int main(){
int t,n,v;
cin>>t;
while(t--){
cin>>n>>v;
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++) cin>>va[i];
for(int i=0;i<n;i++) cin>>vol[i];
for(int i=0;i<n;i++)
for(int j=v;j>=vol[i];j--){
dp[j]=max(dp[j],dp[j-vol[i]]+va[i]);
}
cout<<dp[v]<<endl;
}
return 0;
}
本文深入探讨了0-1背包问题的经典解决方案,通过动态规划算法实现资源的最大化利用。详细介绍了如何使用C++代码实现背包问题,包括初始化数组、输入物品价值和体积、迭代计算最优解并输出结果。
1061

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



