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 · 173 阅读 · 0 评论 -
dp解决股票问题
最佳买卖股票含冷冻期给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。class Solution { public int maxProfit(int[] prices) { if(prices == null || prices.原创 2021-07-26 12:37:39 · 92 阅读 · 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 · 141 阅读 · 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 · 390 阅读 · 0 评论 -
CodeForces 540D--概率dp
题意:在一个岛上,有 r 个石头,s 个剪刀和 p 个布,遵循石头剪刀布的规则,他们之间相遇的概率相等,问他们存活的概率。输入:2 2 22 1 21 1 3输出:0.333333333333 0.333333333333 0.3333333333330.150000000000 0.300000000000 0.550000000000原创 2016-07-27 19:55:41 · 378 阅读 · 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 · 320 阅读 · 0 评论 -
POJ 3176
题意:一个数塔,从上到下只能走相邻的点即在一个三角形区域内,问从上到下最大的和是多少?输入:573 88 1 02 7 4 44 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 · 253 阅读 · 0 评论 -
动态规划总结
动态规划总结:动态规划算法,在T大某位老师的书中说就是递推+重复子问题。动态规划算法的效率主要与重复子问题的处理有关。 典型的题目有 陪审团,最大公共子串问题 1,最大公共子串问题 这个是动态规划的基础题目。动态规划就是递推和重复子结构。确定了递推关系后。找到一个能极大地减少重复运算的子结构至关重要。选的好了,时间效率会很原创 2016-08-11 21:37:29 · 492 阅读 · 0 评论 -
0-1背包相关问题
一、问题描述有n个物品,每个物品有各自的体积和价值,有一个给定容量的背包。问:在不超过背包总容量的前提下,如何装物品才能使得背包的总价值最大?二、动态规划算法原理及其过程1、原理动态规划是把大问题拆分成若干子问题,通过寻找大问题与子问题的递推关系,解决一个个子问题,最终到达解决原问题的效果。动态规划则通过填写表把所有已经解决的子问题答案记录下来,在新问题里需要用到的子问题的解可以...原创 2019-10-11 13:43:03 · 108 阅读 · 0 评论