dynamic-programming 相关问题

动态编程是一种算法技术,用于有效地解决包含许多重叠子问题的递归结构的问题。

为什么我在 leetcode 问题“House Robber”上遇到错误?

类解决方案{ 民众: int rob(向量& nums) { int max=0,sum=0,temp; for(int i=0;i class Solution { public: int rob(vector<int>& nums) { int max=0,sum=0,temp; for(int i=0;i<nums.size();i++) { if(nums[i]!=0) { if(nums[i]>max) { max=nums[i]; temp=i; } } } nums[temp]=0; if((temp+1)!=NULL) nums[temp+1]=0; if((temp-1)!=NULL) nums[temp-1]=0; sum=sum+max; for(int i=0;i<nums.size();i++) { if(nums[i]!=0) { return rob(nums); } } return sum; } }; 有个问题是: https://leetcode.com/problems/house-robber/description/ 我不知道为什么会出现错误: Line 1037: Char 34: runtime error: addition of unsigned offset to 0x602000000090 overflowed to 0x60200000008c (stl_vector.h) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:1046:34 它在空运行时工作正常,但leetcode不断显示错误 您的代码有一些问题。一般建议:leetcode 作为学习 C++ 的方式并没有良好的声誉。其次,多利用空白。将所有内容放在一起会使代码更难阅读。我将包含您的代码并对其进行一些清理。我会在看到问题的地方添加内嵌评论。 class Solution { public: int rob(vector<int>& nums) { // Most coding standards will tell you to define variables // one per line instead of all together like this. It's just // a style and not a real issue. int max=0,sum=0,temp; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { if(nums[i]>max) { max = nums[i]; temp = i; } } } nums[temp] = 0; // Why are you treating temp like a pointer? This code // is almost certainly wrong. // You probably mean if (temp + 1 < nums.size() if ((temp + 1) != NULL) nums[temp+1] = 0; // This code is probably also wrong. // What you probably mean is "if (temp > 0)" if ((temp - 1) != NULL) nums[temp-1]=0; sum = sum+max; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { return rob(nums); } } return sum; } }; 有关 if 语句的注释可能是问题的原因。但是,我不知道这将如何真正解决您的问题。您已经正确地识别了递归方法。然而,你的基本算法是行不通的。 在任何特定的房子里,如果你抢劫了前一栋房子,你就不能抢劫这一栋。在任何给定的房子里,你必须决定你是否最好抢劫这一栋或下一栋。这就是递归的地方。所以你的代码确实需要使用一种带有“下一个要抢劫的房子”参数的方法。 int sumRobFirst = nums[first] + bestResultRobbing(nums, first+2); int sumRobNext = bestResultRobbing(nums, first+1); if (sumRobFirst > sumRobNext) ...

回答 1 投票 0

为什么棋盘中骑士概率的解法是错误的?

leetcode 的问题陈述 - https://leetcode.com/problems/knight-probability-in-chessboard/ 基本上,骑士从给定的位置开始,随机选择 8 个可能的动作中的 1 个。它使...

回答 1 投票 0

使用 VS Code 解决简单的 C++ 问题。如果我尝试通过打印数组进行调试,为什么输出会发生变化? [重复]

我正在解决 https://codeforces.com/problemset/problem/1476/D 并且我的代码通过了虚拟法官。然而,在我本地的 VS Code 上,如果我尝试使用下面的测试用例,我会遇到以下问题 -

回答 1 投票 0

为什么“最长公共子序列”禁止使用编辑距离方法进行“替换”

编辑距离是一类著名的问题,包括: 不同类型的编辑距离允许不同的字符串组 运营。例如: 编辑距离允许删除、插入...

回答 1 投票 0

为什么“最长公共子序列”问题不允许使用编辑距离方法进行替换

编辑距离是一类著名的问题,包括: 不同类型的编辑距离允许不同的字符串组 运营。例如: 编辑距离允许删除、插入...

回答 1 投票 0

不考虑最后一个事件的动态规划解决方案

我自学了乔恩·克莱因伯格(Jon Kleinberg)写的《算法设计》一书,这个问题几天来一直让我头疼。这是它的删节版本: 那...

回答 1 投票 0

递归、记忆和动态编程之间有什么区别? [重复]

相关问题: 动态编程和记忆:自上而下与自下而上的方法 我已经阅读了很多关于此的文章,但似乎无法理解它。有时递归和动态...

回答 5 投票 0

Python或Java中利润最大化问题

我正在尝试针对以下问题优化我的解决方案。 假设您有 n 个股票的每日价格,以及您可以通过购买这些股票获得的 n 个利润值。 价格 = [1,2,3,4,4] 利润=...

回答 1 投票 0

动态规划矩阵计算问题

销售鱼竿业务,每根鱼竿的价格取决于其长度。给定一个价格表 T,其中 T[i] 是长度为 i 的杆的价格($),任务是将长度为 l 的杆切成最大块...

回答 1 投票 0

具有动态规划问题的桶数组

我正在用 Java 进行动态编程任务,但我陷入了困境: 在任务中,我们会得到一系列桶,里面有随机数量的岩石,两个玩家都从桶中知道它们的数量......

回答 2 投票 0

如何根据 pandas 列值调用 python 函数,其中调用的函数返回数据帧?

我有一个 pandas 数据框,其中列出了商品、它们的销售地点,以及在所有模型中为所述商品提供最低映射的模型。 这是 df 的示例。 导入

回答 3 投票 0

是否存在最长递增子序列的自顶向下动态规划解决方案?

我想知道如何使用自顶向下动态规划找到数组的LIS。 是否存在这样一种解决方案?你能给我使用自上而下查找数组 LIS 的伪代码吗?

回答 5 投票 0

如何根据pandas列值调用python函数?

我有一个 pandas 数据框,其中列出了商品、它们的销售地点,以及在所有模型中为所述商品提供最低映射的模型。 这是 df 的示例。 导入

回答 2 投票 0

如何跟踪两个矩阵之间发生的交换? [已关闭]

我有两个矩阵,A和B。A不是唯一矩阵。当你对A进行一些行交换和列交换操作时,你可以得到B。但是只给出了A和B,所以我想找到哪些列和行被交换了...

回答 1 投票 0

如何跟踪两个矩阵之间发生的交换?

我有两个矩阵,A和B。A不是唯一矩阵。当你对A进行一些行交换和列交换时,你可以得到B。但是只给出了A和B,所以我想找出哪些列和行是...

回答 1 投票 0

更新 React 中“成为卖家”点击时的导航栏链接

我面临着与动态更新导航栏链接相关的挑战。我希望导航栏显示“徽标”、“卖家主页”、“关于”和“销售产品”链接...

回答 1 投票 0

在返回有效交易的值之前打印元组序列

给定一个维度为 m × n 的矩阵 V,其中每个元素代表农产品市场连续 n 天的 m 种不同蔬菜种子的价格。此外,您还获得了...

回答 1 投票 0

最小成本塔放置的动态规划问题

我有一个算法问题,其中我有一条长度为 n 的直线的高速公路,以及在高速公路上每英里建造无线电塔的一组独特的各自成本。我是

回答 1 投票 0

最长公共子序列的实现问题

我正在做这个挑战:https://leetcode.com/problems/longest-common-subsequence/ 我尝试了多种方法来调试我的代码,但我无法找出问题所在。 就像我脑海中所看到的那样......

回答 1 投票 0

oCaml 高阶函数

请有人为 oCaml 解释一下这个问题的算法。 我有解决方案,但我不明白。 定义 iterup:(int * 𝛼 → 𝛼) → int → int → 𝛼 → 𝛼。 Iterup 采用一个函数

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.