【发布时间】:2021-02-20 10:43:32
【问题描述】:
LC:https://leetcode.com/problems/partition-equal-subset-sum/
因此,允许计算 dp[i][j] 的公式,其中如果前 i 个元素的总和为 j 的组合是:
dp[i][j] = dp[i - 1][j - nums[i - 1]] || dp[i - 1][j];
OR 运算符之前的前半部分表示当我们选择第 I 个元素时会发生什么。
我的问题是为什么是j - nums[i - 1] 而不是j - nums[i]。
难道我们不应该将当前的 sum(j) 减去第 i 个元素的当前“权重”(nums[i]),看看前 i-1 个元素是否可以相加?
为什么要减去前一个元素的值?
【问题讨论】:
-
我认为你对
j - nums[i]的看法是正确的(虽然我看不到引用在哪里) -
注意代码前的文字描述是正确的
Thus, the transition function is dp[i][j] = dp[i-1][j] || dp[i-1][j-nums[i]] -
很奇怪,因为“错误代码”的解决方案通过 LC...
-
好的,我看到了不一致的根源。已添加答案
标签: algorithm dynamic-programming