|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zhangjinxuan 于 2022-11-14 21:32 编辑
有一天做 01背包, 我先写了一个记忆化搜索,但是一个测试点都没有过,样例和自己造的一个小数据都过了,为什么呢?
这是我的代码,到底哪儿出了问题呢?
- #include <bits/stdc++.h>
- using namespace std;
- int n, m, f[1001][1001], ans, gw[1001], gv[1001];
- int dfs(int i, int v, int w) {
- if (v == 0) return w;
- if (i == n + 1) return w;
- if (f[i][v]) return f[i][v];
- f[i][v] = dfs(i + 1, v, w);
- if (v >= gv[i]) {
- f[i][v] = max(f[i][v], dfs(i + 1, v - gv[i], w + gw[i]));
- }
- return f[i][v];
- }
- int main() {
- scanf("%d%d", &n, &m);
- for (int i = 1; i <= n; ++i) {
- scanf("%d%d", &gv[i], &gw[i]);
- }
- printf("%d", dfs(1, m, 0));
- }
复制代码
原题:
本帖最后由 柿子饼同学 于 2022-11-15 18:38 编辑
这就别管了吧
用正常的方法做吧 , 记忆化可能不稳定
我已经退役了...
|
|