背包问题求解,帮忙看看代码思路出了什么问题
/*这是hdu上边第2602道题收集骨头(背包问题)
我的思路代码如下,想的几个样例都对了 不知道为啥还是结果错误没法过,大佬们帮忙看看问题出在哪了!
万分感谢!
*/
#include <bits/stdc++.h>
using namespace std;
int dp;
int w;
int v;
int main() {
int n,m,t;//n物品数量,m背包容量
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++) {
scanf("%d",&v);
}
for(int i=1; i<=n; i++) {
scanf("%d",&w);
}
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++) {
for(int j=0; j<=m; j++) {
if(w>j)
dp=dp;//当重量大于容量,不拿
else if(w<=j)
dp=max(dp,dp]+v);//dp为不拿的情况,另一个是拿的情况
}
}
}
printf("%d",dp);
return 0;
} 啊我明白了{:10_266:}输出放错位置了 多个样例就不行了
页:
[1]