day43 动态规划part5 代码随想录算法训练营 494. 目标和

题目:494. 目标和

我的感悟:

  • 加油!

理解难点:

  • dp的几种方法的应用
  • 记住dp[j] += dp[j-nums[i]]

听课笔记:

代码示例:

class Solution:
    def findTargetSumWays(self, nums: List[int], target: int) -> int:
        total_sum = sum(nums)
        if abs(target) > total_sum:
            return 0
        if (sum(nums) + target) % 2 ==1:
            return 0
        left = (sum(nums) + target)//2 # 目标值 测试为4
        # 初始化
        dp = [0] * (left+1)
        dp[0] = 1   #

        for i in range(len(nums)):
            for j in range(left,nums[i]-1,-1):
                dp[j] += dp[j-nums[i]]
        return dp[left]

通过截图:

扩展写法:

  • 这里可以用回溯

资料:

  1. 目标和 

大家重点理解 递推公式:dp[j] += dp[j - nums[i]],这个公式后面的提问 我们还会用到。  

视频讲解:https://www.bilibili.com/video/BV1o8411j73x

https://programmercarl.com/0494.%E7%9B%AE%E6%A0%87%E5%92%8C.html

posted @ 2024-02-27 21:15  o蹲蹲o  阅读(1)  评论(0编辑  收藏  举报