mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
Merge pull request #2857 from realtmxi/master
[Fix][DP][Target Sum] python 2D version solution
This commit is contained in:
@ -670,18 +670,26 @@ class Solution:
|
||||
|
||||
# 创建二维动态规划数组,行表示选取的元素数量,列表示累加和
|
||||
dp = [[0] * (target_sum + 1) for _ in range(len(nums) + 1)]
|
||||
dp = [[0] * (target_sum + 1) for _ in range(len(nums))]
|
||||
|
||||
# 初始化状态
|
||||
dp[0][0] = 1
|
||||
if nums[0] <= target_sum:
|
||||
dp[0][nums[0]] = 1
|
||||
numZero = 0
|
||||
for i in range(len(nums)):
|
||||
if nums[i] == 0:
|
||||
numZero += 1
|
||||
dp[i][0] = int(math.pow(2, numZero))
|
||||
|
||||
# 动态规划过程
|
||||
for i in range(1, len(nums) + 1):
|
||||
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]:
|
||||
dp[i][j] += dp[i - 1][j - nums[i - 1]] # 选取当前元素
|
||||
dp[i][j] += dp[i - 1][j - nums[i]] # 选取当前元素
|
||||
|
||||
return dp[len(nums)][target_sum] # 返回达到目标和的方案数
|
||||
return dp[len(nums)-1][target_sum] # 返回达到目标和的方案数
|
||||
|
||||
|
||||
```
|
||||
|
Reference in New Issue
Block a user