
dp
shao1996
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
三层循环的动态规划
戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。 求所能获得硬币的最大数量。 class Solution { /** * 思路分析原创 2021-07-26 16:30:44 · 253 阅读 · 0 评论 -
dp解决股票问题
最佳买卖股票含冷冻期 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 class Solution { public int maxProfit(int[] prices) { if(prices == null || prices.原创 2021-07-26 12:37:39 · 134 阅读 · 0 评论 -
动态规划解决子序列、子串问题
最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 class Solution { /** * 思路分析: * 1 时间复杂度O(n^2) * 返回最长递增子序列的长度dp[i]:表示以i为结尾的最长递增子序列 * 转移方程:dp[i]原创 2021-07-26 11:38:58 · 189 阅读 · 0 评论 -
CodeForces 474D--规律dp
题意: 一个东西爱吃花,有两种颜色红R和白W,他吃白花每次都一组一组吃,一组是连续在一起的k个,问在花的个数从ai到bi范围里,他总共有多少种吃法? 分析: dp[i]是长度为 i 的方案数。 当 i 当 i>k时,dp[i]=dp[i-1]+dp[i-k]. 长度为 i 的方案数=长度为i-1的方案数+一朵红花或者长度为i-k的方案数 + K朵白花。 代码: #includ原创 2016-07-13 09:54:37 · 447 阅读 · 0 评论 -
CodeForces 540D--概率dp
题意: 在一个岛上,有 r 个石头,s 个剪刀和 p 个布,遵循石头剪刀布的规则,他们之间相遇的概率相等,问他们存活的概率。 输入: 2 2 2 2 1 2 1 1 3 输出: 0.333333333333 0.333333333333 0.333333333333 0.150000000000 0.300000000000 0.550000000000原创 2016-07-27 19:55:41 · 423 阅读 · 0 评论 -
CodeForces 518D---概率dp
题意: 有 n 个人上电梯,每个人是否上电梯的概率是 p ,每个人不管是否上电梯都需要花费一秒,问 t 秒内,电梯上有多少人?(上了电梯 的人要一直在电梯上呆着)。 分析: 因为上了电梯的人要一直在电梯上呆着,因此用 dp[i][j] 表示第 i 秒第 j 个人上电梯的概率,初始dp[0][0]=1,当 n 个人全部上电梯以后, 此时时间已经不能影响概率:dp[i][j]=dp[原创 2016-07-07 16:03:07 · 384 阅读 · 0 评论 -
POJ 3176
题意: 一个数塔,从上到下只能走相邻的点即在一个三角形区域内,问从上到下最大的和是多少? 输入: 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输出: 30 分析: 简单dp,就是一个数塔,可以用一维数组节省空间。 状态转移方程:dp[i][j] = a[i][j] + max( dp[i+1][j], dp[i+1][j+1])原创 2016-07-29 11:20:20 · 290 阅读 · 0 评论 -
动态规划总结
动态规划总结: 动态规划算法,在T大某位老师的书中说就是递推+重复子问题。 动态规划算法的效率主要与重复子问题的处理有关。 典型的题目有 陪审团,最大公共子串问题 1,最大公共子串问题 这个是动态规划的基础题目。动态规划就是递推和重复子结构。 确定了递推关系后。找到一个能极大地减少重复运算的子结构至关重要。选的好了,时间效率会很原创 2016-08-11 21:37:29 · 544 阅读 · 0 评论 -
0-1背包相关问题
一、问题描述 有n个物品,每个物品有各自的体积和价值,有一个给定容量的背包。 问:在不超过背包总容量的前提下,如何装物品才能使得背包的总价值最大? 二、动态规划算法原理及其过程 1、原理 动态规划是把大问题拆分成若干子问题,通过寻找大问题与子问题的递推关系, 解决一个个子问题,最终到达解决原问题的效果。 动态规划则通过填写表把所有已经解决的子问题答案记录下来, 在新问题里需要用到的子问题的解可以...原创 2019-10-11 13:43:03 · 166 阅读 · 0 评论