![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划算法
文章平均质量分 64
动态规划算法
Ma Sizhou
低级的欲望,放纵即可获得;高级的欲望,克制才能达到。
展开
-
动态规划算法练习——11、一和零(多一个维度的0-1背包问题,python描述)
本题的力扣链接:https://leetcode-cn.com/problems/ones-and-zeroes/目录1、题目描述:2、思路:3、代码:3.1 python代码:4、总结:1、题目描述:2、思路:官方的思路。。。3、代码:3.1 python代码:class Solution: def findMaxForm(self, strs: List[str], m: int, n: int) -> int: # dp[i][j][k]表示.原创 2021-09-23 21:10:48 · 186 阅读 · 0 评论 -
动态规划算法练习——10、目标和(求装满背包有⼏种⽅法,python和C++描述)
本题的力扣链接:https://leetcode-cn.com/problems/target-sum/目录1、题目描述:2、思路:3、代码:3.1 python代码(回溯法):3.2 python代码:3.3 C++代码:4、总结:1、题目描述:2、思路:这道题首先一看,好像可以使用回溯搜索法,把所有的情况找出来,然后相加看是不是为target,若是,则计数器加1。这种思想很朴素,但是,会超时。但是也需要会编写程序啊,我把官方的贴过来吧。是C++代码。下面是官方给的回溯法的思路:.原创 2021-09-21 21:33:13 · 252 阅读 · 2 评论 -
动态规划算法练习——9、最后一块石头的重量II(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/last-stone-weight-ii/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:这道题,真正困难的不是0-1背包,或者动态规划,而是理解问题。也就是说,怎么把这个题理解成0-1背包的问题呢,这个才是解题的关键,把这个想清楚了,接下来的套路,就直接使用0-1背包的做法就可以了。我是这么想的:石头总重量为s.原创 2021-09-17 20:23:50 · 241 阅读 · 0 评论 -
动态规划算法练习——8、分割等和子集(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/partition-equal-subset-sum/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:看到这道题,你首先想到的是什么,要是第一次见,我估计首先想到的是:把两个子集找到,然后各自求和比较一下就知道了么。没错,想到这种方法,那首先就是要找子集,然后求和比较,找子集那不就是在找组合么。因此,可以使用回溯法找呀。.原创 2021-09-16 20:50:15 · 326 阅读 · 0 评论 -
动态规划算法练习——7、0-1背包问题(python描述)
来源:代码随想录目录1、题目描述:2、思路:3、代码:3.1 python代码:1、题目描述:有N件物品和⼀个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能⽤⼀次,求解将哪些物品装⼊背包⾥物品价值总和最⼤。2、思路:以下面这个为例子举例:按动态规划5步曲介绍:答:其实都可以,这个是怎么得到的呢?其实是按照递推公式得到的。我们只需要保证我们的遍历顺序能保证公式右边的值比左边的dp[i][j]先得到.原创 2021-09-10 21:52:57 · 476 阅读 · 0 评论 -
动态规划算法练习——6、不同的二叉搜索树(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/unique-binary-search-trees/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:太菜,只能把官方的思路拿过来了。3、代码:3.1 python代码:class Solution: def numTrees(self, n: int) -> int: dp.原创 2021-09-08 20:55:32 · 166 阅读 · 0 评论 -
动态规划算法练习——5、整数拆分(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/integer-break/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:4、总结:1、题目描述:2、思路:一看到题,想到的是:将这个整数从1到n-1遍历,计算j*(n-j),然后每次遍历的时候更新最大乘积,但是发现这样只能是拆分成2个数,显然不可以。但是,要是我们能知道拆分开的两个数拆分的最大乘积,那不就得到n的结果了么。因此,由前面的值,推.原创 2021-09-07 20:40:09 · 768 阅读 · 0 评论 -
动态规划算法练习——4、不同路径(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/unique-paths/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:机器⼈从(0 , 0) 位置触发,到(m - 1, n - 1)终点。按照动规五部曲来分析:3、代码:3.1 python代码:class Solution: def uniquePaths(self, m:.原创 2021-09-05 14:01:17 · 104 阅读 · 0 评论 -
动态规划算法练习——3、使用最小花费爬楼梯(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:我们依然按照代码随想录中的五部曲来:3、代码:3.1 python代码:class Solution: def minCostClimbingStairs(self, cost: Li.原创 2021-09-03 21:46:38 · 309 阅读 · 1 评论 -
动态规划算法练习——2、爬楼梯(python和C++描述)
来源:代码随想录本题的力扣链接:https://leetcode-cn.com/problems/climbing-stairs/目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:3、代码:3.1 python代码:class Solution: def climbStairs(self, n: int) -> int: if n <= 2: # 防止下标越界.原创 2021-08-22 17:26:25 · 184 阅读 · 0 评论 -
动态规划算法练习——1、斐波那契数(python和C++描述)
来源:代码随想录目录1、题目描述:2、思路:3、代码:3.1 python代码:3.2 C++代码:3.3 复杂度:4、总结:1、题目描述:2、思路:3、代码:3.1 python代码:class Solution: def fib(self, n: int) -> int: if n <= 1: return n dp = [0 for i in range(n+1)] # 定义dp数组,.原创 2021-08-22 15:48:08 · 220 阅读 · 0 评论