From baa58f150763be19d559c9dfe59b02703bedd2e7 Mon Sep 17 00:00:00 2001 From: FuTau <83931109+FuTau@users.noreply.github.com> Date: Wed, 2 Apr 2025 13:57:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=200494.=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E5=92=8C=20=E4=B8=ADPython=E4=BA=8C=E7=BB=B4DP=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=8A=B6=E6=80=81=E8=BD=AC=E7=A7=BB=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 判断条件使用了nums[i-1]而不是当前处理的元素nums[i]。这导致在处理第i个元素时错误地检查了前一个元素的值,从而导致状态转移错误。 正确的条件应为j >= nums[i],以确保当前元素nums[i]可以被选中。 同时建议可以去除初始化时对0元素的操作,在双重循环中当我们碰到0的时候,dp[i][j]会被加2次,这就与2^(0的个数)相对应了。 --- "problems/0494.\347\233\256\346\240\207\345\222\214.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/problems/0494.\347\233\256\346\240\207\345\222\214.md" "b/problems/0494.\347\233\256\346\240\207\345\222\214.md" index a23e1743cb..d9cb4c98bd 100644 --- "a/problems/0494.\347\233\256\346\240\207\345\222\214.md" +++ "b/problems/0494.\347\233\256\346\240\207\345\222\214.md" @@ -684,7 +684,7 @@ class Solution: for i in range(1, len(nums)): for j in range(target_sum + 1): dp[i][j] = dp[i - 1][j] # 不选取当前元素 - if j >= nums[i - 1]: + if j >= nums[i]: dp[i][j] += dp[i - 1][j - nums[i]] # 选取当前元素 return dp[len(nums)-1][target_sum] # 返回达到目标和的方案数