- 博客(22)
- 收藏
- 关注
原创 每日一题_1
1^剩余游客的利润小于等于转动一次的成本时—停止营业(等于时,因为利润都一样,而题目要求转动次数要尽可能少,所以等于时也停止营业)2^在遍历乘客数组时,剩余的总游客的利润小于等于遍历完乘客数组还需要的转动次数的成本时—停止营业。
2024-01-01 14:06:13
558
原创 买卖股票的最佳时机(各种变型)
买卖股票的最佳时机及其各种变型题目因为是动态规划这一专栏,所以主要目的是训练动态规划思维121. 买卖股票的最佳时机。
2023-12-27 19:25:13
834
原创 动态规划_打家劫舍(Ⅰ~Ⅲ)
打家劫舍系列198. 打家劫舍打家劫舍的dp递推公式比较容易找到难的是边界情况判断以及跟树结合时需要使用备忘录。
2023-12-27 11:14:49
1426
1
原创 动态规划_14(LeetCode:377. 组合总和 Ⅳ)
排列问题和组合问题的精髓在于遍历顺序外循环为背包容量,内循环为物品种类时得到的结果为排列数外循环为物品种类,内循环为背包容量时得到的结果的组合数。
2023-12-23 16:57:32
93
1
原创 动态规划_13(LeetCode:518. 零钱兑换 II)
其含义为:在coins数组前i个硬币面值中任取,最后能够凑出大小为j的组合数。组合问题,dp数组的含义自然是组合数。对于在第i层fori循环的dp[j]dp[j-coins[i] ]表示。求组合数->递推公式为相加。无限取->完全背包问题。,凑成各个面值的组合数。
2023-12-23 15:28:10
74
1
原创 背包问题_完全背包
和01背包的差别在于物品数量不受限制有N种物品和一个背包容量为W的背包第n种物品的体积为voulme[n],价值为worth[n]每种物品都有无限多个(可以放入背包任意件)求解背包能够放入的最大价值完全背包问题和01背包问题的解决只在dp数组的遍历顺序上存在差异。
2023-12-23 14:16:05
261
1
原创 动态规划_12(LeetCode:474. 一和零)
要注意观察题目条件,判断要使用的背包类型有时候会将本题中的01个数看作两个物品(0和1)(多重背包)重复选择。
2023-12-23 13:27:43
232
1
原创 动态规划第九题(LeetCode:416. 分割等和子集)
草稿版2023年12月21日16点09分第八题写在了背包问题里,是一个原汁原味的01背包问题而且01背包的总结写太长时间了,脑子还转不过来按照代码随想录刷题的弊端—固定了做题思维,只会往题目所在章节介绍的方法去思考问题这是第一道01背包的应用乍一看 一点思路都没还是得看题解才能有思路贴一个老哥的题解。
2023-12-21 16:09:26
234
1
原创 背包问题_01背包
用于快速过01背包的知识点注意:dp数组索引那块可能比较混乱,多理解一下有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。
2023-12-21 12:38:42
411
1
原创 Java课程实验10_IO流
有段时间没去学Java了,一到实验课就一脸懵,得找时间补补基础了1^args[]获取的字符串需要手动在编辑配置中设置2^seek用于设置文件指针的偏移量需要注意read等方法调用后,seek会自动更新其指向的位置。
2023-12-20 19:52:36
86
1
原创 动态规划第七题(LeetCode:96. 不同的二叉搜索树)
第一次尝试md找了个模板改了一下又在写递推公式时不细心处理边界,导致数组越界.下次注意XD。
2023-12-20 15:20:06
101
1
原创 动态规划第六题(LeetCode:343. 整数拆分)
改后:max = cur*(i-cur) > cur * dp[i - cur]?可以先从1开始从小到大固定一个数(记作cur),然后在cur遍历(1-i)时维护一个max=cur*dp[i-cur]而cur遍历可以做剪枝优化(cur遍历到i/2即可,因为乘法的交换律,可以理解为和(i-cur)对称,出现重复了)max:cur*dp[i-cur];原来的递推公式忽略了cur*(i-cur)可能会比cur*dp[i-cur]还要大的情况。i*dp[i-cur]应改为cur*dp[i-cur]
2023-12-20 13:36:07
73
1
原创 动态规划第五题(LeetCode:63. 不同路径 II)
前的表达式为真时,整个式子的值就等于' : '前的值,否则为后者,三目运算符节省了一个if判断语句,在很多地方都有妙用。2^在对第一行和第一列初始化的时候,遇到障碍后,此后的位置都要设为0(因为到达它们的位置有且仅有一条,还被障碍挡住)1^在写递推公式时,多了个障碍判断,如果当前坐标处有障碍,则无法抵达此位置,dp数组的值就要设为0;我这里用初始值为1的key来记录是否有经过障碍,经过时将key改为0,后面的赋值也就都为0了。
2023-12-19 19:13:43
70
1
原创 动态规划第四题(LeetCode:62. 不同路径)
然后这一题还学到了二维vector带大小的定义,以前从来没用过:vector dp(行数,vector (列数,初始化的值?))----这里最后一个参数不知道是不是这个意思。后面将第一行和第一列初始化为1后(因为这上面的坐标只能够从一个方向走来),就可以将递推公式化简:dp[i][j]=dp[i-1][j]+dp[i][j-1]把递推公式复杂化了dp[i][j]=(i>0?
2023-12-19 17:46:46
76
1
原创 动态规划第三题(LeetCode:746. 使用最小花费爬楼梯)
1^题目要求到达的top对应的是dp数组中索引为cost.size()的值。2^起点可以选择0或1,所以dp数组中0和1对应的花费为0。
2023-12-19 17:08:28
79
1
原创 动态规划第二题(LeetCode:70. 爬楼梯)
难在了如何自己想出递推公式(第一题递推公式直接给出)本题的递推公式和第一题的斐波那契数列相同。
2023-12-19 16:51:19
69
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人