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 @@ -670,18 +670,26 @@ class Solution:
670670
671671 # 创建二维动态规划数组,行表示选取的元素数量,列表示累加和
672672 dp = [[0 ] * (target_sum + 1 ) for _ in range (len (nums) + 1 )]
673+ dp = [[0 ] * (target_sum + 1 ) for _ in range (len (nums))]
673674
674675 # 初始化状态
675676 dp[0 ][0 ] = 1
677+ if nums[0 ] <= target_sum:
678+ dp[0 ][nums[0 ]] = 1
679+ numZero = 0
680+ for i in range (len (nums)):
681+ if nums[i] == 0 :
682+ numZero += 1
683+ dp[i][0 ] = int (math.pow(2 , numZero))
676684
677685 # 动态规划过程
678- for i in range (1 , len (nums) + 1 ):
686+ for i in range (1 , len (nums)):
679687 for j in range (target_sum + 1 ):
680688 dp[i][j] = dp[i - 1 ][j] # 不选取当前元素
681689 if j >= nums[i - 1 ]:
682- dp[i][j] += dp[i - 1 ][j - nums[i - 1 ]] # 选取当前元素
690+ dp[i][j] += dp[i - 1 ][j - nums[i]] # 选取当前元素
683691
684- return dp[len (nums)][target_sum] # 返回达到目标和的方案数
692+ return dp[len (nums)- 1 ][target_sum] # 返回达到目标和的方案数
685693
686694
687695```
You can’t perform that action at this time.
0 commit comments