2017年3月5日15:59:34
裸Dp
#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
int Value[maxn];
int Space[maxn];
int Dp[maxn];
int main(){
int T,n,m;
cin>>T;
while(T--){
cin>>n>>m;
memset(Value,0,sizeof(Value));
memset(Space,0,sizeof(Space));
memset(Dp,0,sizeof(Dp));
for(int i=0;i<n;++i)
scanf("%d",Value+i);
for(int i=0;i<n;++i)
scanf("%d",Space+i);
for(int i=0;i<n;++i){
for(int j=m;j>=Space[i];--j){
Dp[j]=max(Dp[j],Dp[j-Space[i]]+Value[i]);
}
}
printf("%d\n",Dp[m]);
}
return 0;
}
本文介绍了一个使用裸DP解决背包问题的C++实现方案。通过输入物品价值与占用空间,程序计算并输出最大价值。该代码适用于理解0-1背包问题的基础算法。
360

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



