File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -671,18 +671,26 @@ class Solution:
671671
672672 # 创建二维动态规划数组,行表示选取的元素数量,列表示累加和
673673 dp = [[0 ] * (target_sum + 1 ) for _ in range (len (nums) + 1 )]
674+ dp = [[0 ] * (target_sum + 1 ) for _ in range (len (nums))]
674675
675676 # 初始化状态
676677 dp[0 ][0 ] = 1
678+ if nums[0 ] <= target_sum:
679+ dp[0 ][nums[0 ]] = 1
680+ numZero = 0
681+ for i in range (len (nums)):
682+ if nums[i] == 0 :
683+ numZero += 1
684+ dp[i][0 ] = int (math.pow(2 , numZero))
677685
678686 # 动态规划过程
679- for i in range (1 , len (nums) + 1 ):
687+ for i in range (1 , len (nums)):
680688 for j in range (target_sum + 1 ):
681689 dp[i][j] = dp[i - 1 ][j] # 不选取当前元素
682690 if j >= nums[i - 1 ]:
683- dp[i][j] += dp[i - 1 ][j - nums[i - 1 ]] # 选取当前元素
691+ dp[i][j] += dp[i - 1 ][j - nums[i]] # 选取当前元素
684692
685- return dp[len (nums)][target_sum] # 返回达到目标和的方案数
693+ return dp[len (nums)- 1 ][target_sum] # 返回达到目标和的方案数
686694
687695
688696```
You can’t perform that action at this time.
0 commit comments