LeetCode-动态规划
LeetCode-动态规划
hclbeloved
这个作者很懒,什么都没留下…
展开
-
LeetCode-动态规划-路径的数目
1 题目剑指 Offer II 098. 路径的数目62. 不同路径2 实现class Solution {public: vector<vector<long>> dp; int uniquePaths(int m, int n) { //方法一:使用 dfs 超时 // int res = 0; // dfs(m, n, 0, 0, res); // return res;原创 2022-02-23 19:37:30 · 267 阅读 · 0 评论 -
LeetCode-动态规划-背包问题
1 背包问题就是动态规划动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客背包问题时一种动态规划的问题,且常用的是“从底到上”的动态规划。有的时候问题本身可能无法直接看出是背包问题,不过可以对问题进行抽象,底层逻辑如果相同,便可当作“背包问题”进行求解。1.1 按照背包的类型分类:0-1背包:每个元素最多被选择一次;完全背包:每个元素可以被重复选择;1.2 按照背包所求解...原创 2022-01-04 19:31:15 · 713 阅读 · 0 评论 -
LeetCode-动态规划-剑指 Offer 14- I. 剪绳子
1 题目剑指 Offer 14- I. 剪绳子动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现class Solution {public: int cuttingRope(int n) { vector<int> dp(n+3,1); dp[2] = 1, dp[3] = 2, dp[4] = 4; for (int i = 5; i <=n; ++i) {原创 2022-01-03 08:39:50 · 340 阅读 · 0 评论 -
LeetCode-动态规划-剑指 Offer 48. 最长不含重复字符的子字符串
1 题目剑指 Offer 48. 最长不含重复字符的子字符串动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现2.1 从底向上的动态规划class Solution {public: int lengthOfLongestSubstring(string s) { vector<int> dp(128,-1);//存储每个字符最后出现的位置 int i=0,j=原创 2022-01-03 08:37:37 · 57 阅读 · 0 评论 -
LeetCode-动态规划-剑指 Offer 46. 把数字翻译成字符串
1 题目剑指 Offer 46. 把数字翻译成字符串动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现使用自底向上的动态规划,且将备忘录优化掉了。class Solution {public: int translateNum(int num) { int n = 0, remain = 0, preRemain = -1, op = num, pre = 1, ppre = 1, cur = 0;原创 2022-01-03 08:34:14 · 197 阅读 · 0 评论 -
LeetCode-动态规划-剑指 Offer 47. 礼物的最大价值
1 题目剑指 Offer 47. 礼物的最大价值动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现class Solution {public: vector<vector<int>> dp; int maxValue(vector<vector<int>>& grid) { int row = grid.size(), col = gri原创 2022-01-03 08:31:58 · 210 阅读 · 0 评论 -
LeetCode-动态规划-052-连续子数组的最大和
1 题目53. 最大子数组和动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现使用从底向上的动态规划,且优化掉了备忘录。class Solution {public: int maxSubArray(vector<int>& nums) { int pre = nums[0], max = pre; for(int i=1;i < nums.size原创 2022-01-03 08:27:10 · 235 阅读 · 0 评论 -
LeetCode-动态规划-070-爬楼梯
1 题目70. 爬楼梯动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现使用的自底向上的动态规划,并且优化掉了备忘录。class Solution {public: int climbStairs(int n) { if (n == 1) return 1; int pre1 = 1, pre2 = 1; int r = 0;原创 2022-01-03 08:22:19 · 154 阅读 · 0 评论 -
LeetCode-动态规划-518-零钱兑换II
1 题目518. 零钱兑换 II动态规划介绍:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 代码实现class Solution {public: int change(int amount, vector<int>& coins) { vector<int> dp(amount+1,0); //base case dp[0] = 1;原创 2022-01-03 08:19:51 · 150 阅读 · 0 评论 -
LeetCode-动态规划-072-编辑距离
1 题目72. 编辑距离动态规划参考:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客2 分析(1)使用从底向上的动态规划(此时是需要base case的);(2)确定dp的含义:dp[i][j]表示字符串A的前i个字母到字符串B的前j个字母间的最少编辑距离。(3)base case:dp[i][0] = i,dp[0][j] = j(4)状态转移方程:(4.1)已知dp[i][j-1],则在A字符串的前i个字符后面插入...原创 2022-01-03 08:11:48 · 83 阅读 · 0 评论 -
LeetCode-动态规划-322-零钱兑换
1 题目322. 零钱兑换2 从上到下的动态规划class Solution {public: int coinChange(vector<int>& coins, int amount) { return helper(coins, amount); } int helper(vector<int>& coins, int amount) { if (amount < 0) { return原创 2022-01-03 07:57:28 · 191 阅读 · 0 评论 -
LeetCode-动态规划-120-三角形最小路径和
1 题目120. 三角形最小路径和动态规划的讲解可以参考之前的文章:算法-动态规划-《算法导论3rd-P215》_hclbeloved的博客-CSDN博客采用从上到下的动态规划(之前讲过,从上到下的动态规划使用的是递归),配合备忘录的剪枝操作即可。2 实现class Solution {public: //dp[i][j]的值表示以第i行,第j列的元素为顶点的三角形的最小路径和 vector<vector<int>> dp; //这个原创 2022-01-03 07:45:16 · 79 阅读 · 0 评论