zhangjinxuan 发表于 2022-11-14 18:11:53

01背包,我用记忆化搜索做,爆零了

本帖最后由 zhangjinxuan 于 2022-11-14 21:32 编辑

有一天做 01背包, 我先写了一个记忆化搜索,但是一个测试点都没有过,样例和自己造的一个小数据都过了,为什么呢?

这是我的代码,到底哪儿出了问题呢?
#include <bits/stdc++.h>
using namespace std;

int n, m, f, ans, gw, gv;

int dfs(int i, int v, int w) {
        if (v == 0) return w;
        if (i == n + 1) return w;
        if (f) return f;
        f = dfs(i + 1, v, w);
        if (v >= gv) {
                f = max(f, dfs(i + 1, v - gv, w + gw));
        }
        return f;
}

int main() {
        scanf("%d%d", &n, &m);
        for (int i = 1; i <= n; ++i) {
                scanf("%d%d", &gv, &gw);
        }
        printf("%d", dfs(1, m, 0));
}

原题:

zhangjinxuan 发表于 2022-11-14 20:44:13

有人吗?谁收藏的?是想慢慢研究吗{:10_256:}

人造人 发表于 2022-11-14 21:21:32

没过的测试点的输入数据是什么?
你得知道输入是什么,输入了什么导致你的程序给出了错误的结果?
没办法重现的问题基本无解

zhangjinxuan 发表于 2022-11-14 21:25:16

人造人 发表于 2022-11-14 21:21
没过的测试点的输入数据是什么?
你得知道输入是什么,输入了什么导致你的程序给出了错误的结果?
没办法 ...

我不知道,测试点没有公开

人造人 发表于 2022-11-14 21:25:48

zhangjinxuan 发表于 2022-11-14 21:25
我不知道,测试点没有公开

无解

zhangjinxuan 发表于 2022-11-14 21:25:49

人造人 发表于 2022-11-14 21:21
没过的测试点的输入数据是什么?
你得知道输入是什么,输入了什么导致你的程序给出了错误的结果?
没办法 ...

知道我肯定会说出来的,明天再说吧,今天有点晚了

人造人 发表于 2022-11-14 21:26:30

    if(v == 0) return w;
价值为0的时候返回体积?
什么意思?

人造人 发表于 2022-11-14 21:28:56

    printf("%d\n", dfs(1, m, 0));
m是什么?体积?
把m传给v ?
把体积传给价值?
我表示看不懂

人造人 发表于 2022-11-14 21:30:17

https://blog.csdn.net/Iseno_V/article/details/100001133

zhangjinxuan 发表于 2022-11-14 21:32:25

人造人 发表于 2022-11-14 21:26
if(v == 0) return w;
价值为0的时候返回体积?
什么意思?

不好意思,没有给原题:

zhangjinxuan 发表于 2022-11-14 21:33:45

人造人 发表于 2022-11-14 21:30
https://blog.csdn.net/Iseno_V/article/details/100001133

我会DP的01背包,但我就是想问一下这个代码为什么不行?

人造人 发表于 2022-11-14 21:36:14

zhangjinxuan 发表于 2022-11-14 21:32
不好意思,没有给原题:

所以说v和w到底是体积和价值还是价值和体积?
怎么同一个问题整出两个完全不同的概念来?

zhangjinxuan 发表于 2022-11-14 21:41:47

人造人 发表于 2022-11-14 21:36
所以说v和w到底是体积和价值还是价值和体积?
怎么同一个问题整出两个完全不同的概念来?

原题说了的啊?v是体积,w是收益

人造人 发表于 2022-11-14 21:43:12

我研究研究吧
首先你要明白,无法重现的问题基本上无法解决

zhangjinxuan 发表于 2022-11-15 08:10:08

人造人 发表于 2022-11-14 21:43
我研究研究吧
首先你要明白,无法重现的问题基本上无法解决

感谢大佬提醒

柿子饼同学 发表于 2022-11-15 18:36:45

本帖最后由 柿子饼同学 于 2022-11-15 18:38 编辑

这就别管了吧
用正常的方法做吧 , 记忆化可能不稳定
我已经退役了...{:10_266:}

zhangjinxuan 发表于 2022-11-15 19:23:36

柿子饼同学 发表于 2022-11-15 18:36
这就别管了吧
用正常的方法做吧 , 记忆化可能不稳定
我已经退役了...

好,感谢前辈提醒,我会加油的!

柿子饼同学 发表于 2022-11-15 19:37:47

zhangjinxuan 发表于 2022-11-15 19:23
好,感谢前辈提醒,我会加油的!

明年 , 祝你一等奖
要好好努力了{:10_265:}
页: [1]
查看完整版本: 01背包,我用记忆化搜索做,爆零了