dp专题10 目标和
dp专题10 目标和
原创 于 2024-01-08 16:51:15 发布 · 粉丝可见 · 428 阅读 · 9 · 10 · 本内容遵循CC 4.0 BY-SA版权协议 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 GEO检测 · 编辑
文章链接:https://blog.csdn.net/hacker_51/article/details/135460549
本题链接: . - 力扣(LeetCode)
题目:


思路:
根据这道题,可以通过暴力的方法进行取 + 号或者 - 号 两个操作,通过当刚好得到 target 的时候 答案 +1,但是通过长度是 20 ,操作状态为 2个,随后的回溯暴力递归,最坏的情况时间复杂度大约是 20^20^2 ,肯定会TLE了。
这时候就用到了动态规划dp,这里我们可以知道有两个操作 + -,我们分成两个子集,一些放正号子集 left,另一些放负号子集 righ。
最后得到 : left + righ = sum 其中 sum 为整个 nums 数组的总和
然后将两个子集合并: left - righ = target
根据这两个式子我们可以推导出 left = (sum + target) / 2
这时候我们又可以将其看作为背包问题了,根据题目意思要求的是能够凑成 target的方法有多少种,相当于背包问题中能够刚好装满给背包容量的方案数是多少一样的。
只是这里需要计算背包容量 v 为 left
代码详解如下:
1 | |
最后提交:

觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭
wechat pay
ali pay
dp专题10 目标和
http://blog.angindem.cn/2024/01/08/Angindem-CSDN博客/120_120/