
动态规划
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 · 165 阅读 · 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 · 232 阅读 · 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 · 147 阅读 · 0 评论 -
[leetcode]动态规划之CountingBits
动态规划之CountingBits题目思考代码题目leetcode入口思考这道题让我思考了dp数组代表什么含义。dp数组含义:一般来说dp[i]就代表问题的解,dp[i]的值与前面的值有联系(不一定是相邻的)初始值一般第一个或者第二个初始值需要手动设定本题解题方法:本题需要找规律,一个一个把答案解出来,寻找和以前的答案的关系规律:从数字1开始,如果i是偶数,那么1的个数就...原创 2019-06-23 00:09:04 · 161 阅读 · 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 · 226 阅读 · 0 评论 -
[leetcode]动态规划之Largest Plus Sign
动态规划之Largest Plus Sign题目思考代码暴力法DP法题目leetcode入口思考刚开始在想一个位置(i,j)是否在mines容器中要怎么查找想过直接开一个数组存储,但是怕太大了爆掉,后来看了解析发现N的范围也不是很大,于是就应该直接开数组存储。。。暴力法可以过但是非常慢。dp法:选择所在点中,四个方向1的个数最小的那个最为该点处的阶代码暴力法class Sol...原创 2019-06-18 23:13:53 · 172 阅读 · 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 · 149 阅读 · 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 · 123 阅读 · 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 · 5501 阅读 · 0 评论 -
[leetcode]动态规划之Maximum Product Subarray
动态规划之Maximum Product Subarray题目思考类型归类代码题目leetcode入口思考特殊在于,数组元素可能是0或者是负数。当遇到负数的时候,最大值和最小值间会出现翻转,即:最大值会变成最小值,最小值会变成最大值维护两个数组dpmin[i]:存储以元素[i]为结尾的连续一段的最大值dpmax[i]:存储以元素[i]为结尾的连续一段的最小值每次遍历都要 res...原创 2019-05-13 23:45:16 · 207 阅读 · 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 · 167 阅读 · 0 评论 -
[leetcode]动态规划之Triangle
动态规划之Triangle题目思考答案题目leetcode入口思考刚开始想这道题,想着的是建立一维的表格。但是到某一层的距离,不能用到前面层的距离表示。查了网上答案,看了在求每一层的最小距离的时候,需要求得到该层每一个格子的最短距离,最后求该层最小的值因此每层都要叠加。答案class Solution {public: int minimumTotal(vector&...原创 2019-05-13 19:12:44 · 187 阅读 · 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 · 253 阅读 · 0 评论