动态规划
crabstew
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[leetcode]5. Longest Palindromic Substring最长回文子串
最长回文子串思想代码结果改进DP的改进巧妙的方法:从中心扩展 思想 这道题是 DP 下的题目,找一个字符串中最长的回文子串。 首先要解决判别回文子串的问题。 其次,利用DP的思想: 把字符串的长度作为分解子问题的标准 长度为N的字符串的最大回文子串长度 = max{ 长度为N-1的最大回文子串长度 , 加入第N个字符之后从右往左数最长回文串的长度} 代码 bool judge(char*a,int...原创 2019-04-01 10:34:49 · 180 阅读 · 0 评论 -
[leetcode]动态规划之PerfectSquare
动态规划之PerfectSquare题目思考代码数学方法动态规划 题目 leetcode题目入口 思考 数学定理:四平方和定理:每个正整数均可表示为不超过4个完全平方数的和。 注意有些整数不可表示为3个完全平方数的和,例如7 代码 数学方法 class Solution { public: int numSquares(int n) { //因为假如 c=a^2+b^2 ...原创 2019-06-27 00:25:45 · 260 阅读 · 0 评论 -
[leetcode]动态规划之Maximal Square
动态规划之Maximal Square题目思考代码 题目 leetcode入口 思考 之前认为dp表格的含义是到dp[i][j]是到表格中(i,j)这个点为止,最优的解 但是通过这道题,dp[i][j]可以有了新的含义 新的含义: dp[i][j]:以包含点(i,j)的最优解,最后只需找出表格中的最优解即可了。 这道题的解题思路: 除了第一行和第一列外,dp[i][j]代表以(i,j)为右下顶点的...原创 2019-06-24 00:06:50 · 161 阅读 · 0 评论 -
[leetcode]动态规划之CountingBits
动态规划之CountingBits题目思考代码 题目 leetcode入口 思考 这道题让我思考了dp数组代表什么含义。 dp数组含义: 一般来说dp[i]就代表问题的解, dp[i]的值与前面的值有联系(不一定是相邻的) 初始值 一般第一个或者第二个初始值需要手动设定 本题解题方法: 本题需要找规律,一个一个把答案解出来,寻找和以前的答案的关系 规律: 从数字1开始,如果i是偶数,那么1的个数就...原创 2019-06-23 00:09:04 · 178 阅读 · 0 评论 -
[leetcode]动态规划之House Robber II
动态规划之House Robber II题目思考代码 题目 leetcode入口 思考 刚开始想的dp[i]的解释是以nums[i]为结尾(包括nums[i])的最大数量,然后找不到状态方程。(这道题要和最长的子序列和区别开来,最长子序列和是连续的,故需要以dp[i]为结尾,而这道题可以是跳跃的,故不需要以dp[i]为结尾) 而把dp[i]理解为到位置i位置所能偷的最大数量,就能很容易的写出状态方...原创 2019-06-20 00:06:56 · 247 阅读 · 0 评论 -
[leetcode]动态规划之Largest Plus Sign
动态规划之Largest Plus Sign题目思考代码暴力法DP法 题目 leetcode入口 思考 刚开始在想一个位置(i,j)是否在mines容器中要怎么查找 想过直接开一个数组存储,但是怕太大了爆掉, 后来看了解析发现N的范围也不是很大,于是就应该直接开数组存储。。。 暴力法可以过但是非常慢。 dp法:选择所在点中,四个方向1的个数最小的那个最为该点处的阶 代码 暴力法 class Sol...原创 2019-06-18 23:13:53 · 190 阅读 · 0 评论 -
[leetcode]动态规划之Minimum ASCII Delete Sum for Two Strings
动态规划之Minimum ASCII Delete Sum for Two Strings题目思考答案 题目 leetcode入口 思考 这道题的特征:两个字符串,dp 对于两个字符串的这种问题,一般dp用二维数组表示,dp[i][j]一般表示两个字符串前i个和前j个字符所满足的性质 刚开始做这道题,以为和删去字符的ASCII值有关,后来发现其实和求编辑距离没什么两样 答案 class Solut...原创 2019-05-29 21:47:51 · 169 阅读 · 0 评论 -
[leetcode]动态规划Unique Binary Search Trees
动态规划Unique Binary Search Trees题目思想代码 题目 leetcode入口 思想 当数组为 1,2,3,4,… i,… n时,基于以下原则的BST建树具有唯一性: 以i为根节点的树,其左子树由[1, i-1]构成, 其右子树由[i+1, n]构成。 刚开始,知道这个是卡特兰数,想用公式C2nn/(n+1)C_{2n}^n/(n+1)C2nn/(n+1)做,但是C2nnC...原创 2019-05-12 23:50:23 · 140 阅读 · 0 评论 -
动态规划经典题目整理
动态规划经典题目整理背包问题最长公共子串问题连续数组最大和问题 背包问题 复杂度 o(nW) n为物品种类,W是背包的重量 单副本背包问题: K(w,j)=max{K(w−wj,j−1)+vj,K(w,j−1)}K(w,j)=max\{K(w-w_j,j-1)+v_j,K(w,j-1)\}K(w,j)=max{K(w−wj,j−1)+vj,K(w,j−1)} K(w,j)代表背包重量为W,有j...原创 2019-05-12 23:44:45 · 5533 阅读 · 0 评论 -
[leetcode]动态规划之Maximum Product Subarray
动态规划之Maximum Product Subarray题目思考类型归类代码 题目 leetcode入口 思考 特殊在于,数组元素可能是0或者是负数。 当遇到负数的时候,最大值和最小值间会出现翻转, 即:最大值会变成最小值,最小值会变成最大值 维护两个数组 dpmin[i]:存储以元素[i]为结尾的连续一段的最大值 dpmax[i]:存储以元素[i]为结尾的连续一段的最小值 每次遍历都要 res...原创 2019-05-13 23:45:16 · 235 阅读 · 0 评论 -
[leetcode]动态规划之wordbreak
动态规划之wordbreak题目知识点思考代码 题目 leetcode入口 知识点 unordered_set a(vector.begin(),vector.end()) //哈希set,可以实现快速的查找 可以使用 a.count(“···”)快速查找 思考 刚开始被查找字符串难住了,后来看了博客才知道,可以使用哈希set来实现常数时间的查找。 对于每一个dp[i],需要遍历之前的dp[j] ...原创 2019-05-13 20:27:15 · 188 阅读 · 0 评论 -
[leetcode]动态规划之Triangle
动态规划之Triangle题目思考答案 题目 leetcode入口 思考 刚开始想这道题,想着的是建立一维的表格。 但是到某一层的距离,不能用到前面层的距离表示。 查了网上答案, 看了在求每一层的最小距离的时候,需要求得到该层每一个格子的最短距离,最后求该层最小的值 因此每层都要叠加。 答案 class Solution { public: int minimumTotal(vector&...原创 2019-05-13 19:12:44 · 202 阅读 · 0 评论 -
[leetcode]动态规划之Ugly Number
动态规划之Ugly Number题目思考代码 题目 leetcode入口 思考 这是一道结合了数学的dp题 这道题里 dp[i]当然存放着满足条件的第i-1个数啦 需要知道以下数学知识: 任意一个自然数都可被分解为素数的乘积。 所以,为了使得他的因子都为2,3,5. 需要从源头开始乘以2,3,5 这里难点是把乘了之后的数排序 代码如下 代码 class Solution { public: ...原创 2019-06-25 00:18:54 · 267 阅读 · 0 评论
分享