鱼C论坛

 找回密码
 立即注册
查看: 1096|回复: 1

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

[复制链接]
发表于 2021-4-4 20:25:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*
这是hdu上边第2602道题收集骨头(背包问题)
我的思路代码如下,想的几个样例都对了 不知道为啥还是结果错误没法过,大佬们帮忙看看问题出在哪了!
万分感谢!
*/
#include <bits/stdc++.h>
using namespace std;

int dp[1005][1005];
int w[1005];
int v[1005];

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[i]);
                }
                for(int i=1; i<=n; i++) {
                        scanf("%d",&w[i]);
                }
                memset(dp,0,sizeof(dp));
                for(int i=1; i<=n; i++) {
                        for(int j=0; j<=m; j++) {
                                if(w[i]>j)
                                        dp[i][j]=dp[i-1][j];//当重量大于容量,不拿
                                else if(w[i]<=j)
                                        dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);//dp[i-1][j]为不拿的情况,另一个是拿的情况
                        }
                }
        }
        printf("%d",dp[n][m]);

        return 0;
}
最佳答案
2021-4-4 20:58:40
啊  我明白了输出放错位置了 多个样例就不行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-4 20:58:40 | 显示全部楼层    本楼为最佳答案   
啊  我明白了输出放错位置了 多个样例就不行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表