
动态规划
动态规划相关的知识和习题
Dearlingxx
记录自己的成长历程,欢迎一起讨论进步。
展开
-
滑雪 记忆化搜索
【代码】滑雪 记忆化搜索。原创 2024-08-17 16:47:48 · 248 阅读 · 0 评论 -
最短Hamilton路径 状压DP
【代码】最短Hamilton路径 状压DP。原创 2024-08-17 16:17:08 · 339 阅读 · 0 评论 -
没有上司的舞会 树形DP
【代码】没有上司的舞会 树形DP。原创 2024-08-17 14:54:37 · 155 阅读 · 0 评论 -
leetcode 动态规划(基础版)单词拆分
一种可行的dp做法是基于完全背包问题,将s看成是一个背包,wordDict看作是物品,然后往s中放入物品判断最终是否可以变为给定的s即可。这道题和上一题都用到了在dp如何枚举连续子串和状态表示:枚举右端点在这过程中枚举所有合理的左端点所有的区间即为合法的连续子串。本题是左闭右开的连续子串枚举,根据题目的递推式将dp[0]=1;原创 2024-06-25 18:07:46 · 281 阅读 · 0 评论 -
leetcode 动态规划(基础版)最长回文字串
首先回文子串肯定是连续的,如果用dp来做就需要找出一个串的所有连续子串,枚举一个串所有连续子串的可行方案是首先枚举子串的右端点,范围是(0~s.size()-1),在每一个右端点中枚举左端点,范围是(0~右端点)。在能够枚举出每一个子串后再在此基础上做状态转移即可。当前连续子串是回文串条件是左右端点字符相同,并且左右端点往中间移动一个位置后形成的合法子串也是回文串。在枚举中找到最大回文子串即可。1.如何枚举出每个连续子串,并表示出它们的状态。2.当前连续子串是回文串的条件。本题其实更像递归似的状态转移。原创 2024-06-23 00:18:58 · 216 阅读 · 0 评论 -
leetcode 动态规划 (基础版) 下降路径最小和
这题和三角型路径和相似,但这题无法在像哪一题一样通过换一个方向逃避下标特判。所以这道题就写一个下标特判的方案。特殊的下标是每一行的第一个元素和最后一个元素,它们由头上的一个元素和左上和右上中的其中一个位置得到,而其他元素都由头上三个位置得到,所以对每一行头部和尾部元素特殊处理,其余元素按题目要求推导即可。原创 2024-06-21 11:36:54 · 391 阅读 · 0 评论 -
leetcode 动态规划(基础版)三角形最小路径和
一种可行的方案是从下到上,避免了从上到下的下标特判。走到每一个位置的最小值等于该位置的上两个位置中的最小值加上该位置的值。原创 2024-06-21 11:18:40 · 255 阅读 · 0 评论 -
leetcode 动态规划(基础版)不同路径II
一种可行的方案是,因为障碍物无法到达也无法从障碍物过来,所以遇上障碍物时将对应的dp位置设为0即可,这样非常巧妙简单地解决了这个问题。原创 2024-06-21 11:13:46 · 218 阅读 · 0 评论 -
leetcode 动规规划(基础版)最小路径和
这道题其实思路很简单,但是还是费了点时间,因为动态规划是递推的升级版,是根据已有的推出新的,所以在作动态规划时要注意初始值的设置,特殊位置需要单独赋值。移动到每一个小整体的右下角的最小路径和是从它左边一个格子和右边一个格子值中选择一个最小的值再加上它自己本身的值。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?原创 2024-06-20 10:28:12 · 234 阅读 · 0 评论 -
leetcode 动态规划(基础版)不同路径
每一个小整体的最后一个位置都是由它左边一个位置和上边一个位置中的一个位置走过来的,所以走到当前小整体的最后一个位置的方法数是左边一个位置和上边一个位置的方法数之和。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?原创 2024-06-20 10:21:19 · 213 阅读 · 0 评论 -
leetcode 动态规划(基础版)删除并获得点数
动态规划其实也是递推的一种,他把冗长多可能性的过程按不断得到小局部最优的方式,推到出整体最优。其实只需要想清楚小局部如何在已有结果中做选择得到当前的结果最优。然后后面的每一项都按同样的方式递归下去即可,动态规划问题其实是吧问题化繁为简,只需要想清楚如何推到得到小局部最优即可。要会理解题目,本题就是相邻三数选一,其实就是相邻的不能选,和上一题做的打家劫舍大致是一样的思路。每次操作中,选择任意一个 ,删除它并获得 的点数。返回你能通过这些操作获得的最大点数。给你一个整数数组 ,你可以对它进行一些操作。原创 2024-06-19 17:16:56 · 1145 阅读 · 0 评论 -
leetcode 动态规划 (基础版)打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,状态转移:dp[i]=max(dp[i-1],dp[i-2]+value[i]);动态规划:在已有结果中,按小局部最优,从已有结果中留下最优结果,达到全局最优。贪心:根据一个原则从无到有,按当前最优,不断生成结果,达到全局最优。给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。原创 2024-06-19 17:02:51 · 356 阅读 · 0 评论 -
leetcode 动态规划(基础版) 使用最小花费爬楼梯
本题开始真正使用动态规划的知识了,本人也是初次入门,只是即兴写下所学所感,在这过程中可能有出错的地方,欢迎大家一起讨论。动态规划:先把到本层的所有策略都做一遍,然后再从中选择最优的,通过小整体最优得到大整体最优解。每一次爬楼梯不再像之前爬楼梯那样单纯递推就可求出,而是要在递推的基础上满足整体最优解。贪心:在实现每一层时,按一个策略从多个选法中选择最优的,通过局部最优达到整体最优。一旦你支付此费用,即可选择向上爬一个或者两个台阶。每一次的更新策略是走到本层楼梯应该是从上一步和上两步中花费最少的走上来的。原创 2024-06-16 19:11:14 · 261 阅读 · 0 评论 -
leetcode 动态规划(基础版) 第N个泰波纳契数列
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。和斐波那契数一样,用一个数组递推算出结果即可。,请返回第 n 个泰波那契数 Tn 的值。原创 2024-06-16 18:38:30 · 102 阅读 · 0 评论