狂野的小黄花 发表于 2021-4-4 20:25:45

背包问题求解,帮忙看看代码思路出了什么问题

/*
这是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;
}

狂野的小黄花 发表于 2021-4-4 20:58:40

啊我明白了{:10_266:}输出放错位置了 多个样例就不行了
页: [1]
查看完整版本: 背包问题求解,帮忙看看代码思路出了什么问题