Dynamic Programming - leetcode [动态规划]
96. Unique Binary Search Trees
120. Triangle
123. Best Time to Buy and Sell Stock III
最后用了两遍扫描:从前往后, 从后往前。注意初始赋值。
132. Palindrome Partitioning II
return minmimun cut
int dp[n + 1];
dp[0] = -1;
bool isPalin[n][n];//index 从x到y是palin
注意:isPalin初始化的时候!三种情况!:1只是单独字母 true;2相邻是(s[i] == s[i+1]);3相隔一个 i从后往前 j从i+2 往后到n-1
135. Candy
注意:还要从后往前刷一遍 验证 因为要跟两边的neighbors相比
139. Word Break
一维DP 带两个变量i,j的问题
for(vector<string>::iterator iter = wordDict.begin(); iter != wordDict.end(); iter++)
实现时前面加一个dummy节点,这样可以把三种情况统一到一个表达式里面。
一个DP问题。定义possible[i] 为S字符串上[0,i]的子串是否可以被segmented by dictionary.
那么
possible[i] = true if S[0,i]在dictionary里面
= true if possible[k] == true 并且 S[k+1,j]在dictionary里面, 0<k<i
= false if no such k exist.
174. Dungeon Game
从后往前遍历!!!
用一个二维数组ans[][]表示到每个格子时,勇士到每一步时至少需要的魔力,如ans[i][j]表示勇士在[i, j]处至少需要ans[i][j]魔力才能到达[m, n]救出皇后。
技巧:从[m, n]往回遍历到[1, 1]
188. Best Time to Buy and Sell Stock IV
用两个地推公式来分别更新两个变量local和global。
local[i][j]:在到达第i天时最多可以进行j次交易并且在最后一次交易在最后一天卖出的最大利润。局部最优。
global[i][j]: 在到达第i天最多可进行j次交易的最大利润。全局最优。
local[i][j] = max(global[i - 1][j - 1] + max(diff, 0), local[i - 1][j] + diff);
global[i][j] = max(local[i][j], global[i - 1][j])
但这道题还有个坑,就是如果k的值远大于prices的天数,比如k是好几百万,而prices的天数就为若干天的话,上面的DP解法就非常的没有效率,应该直接用Best Time to Buy and Sell Stock II 买股票的最佳时间之二的方法来求解
198. House Robber
Dynamic Programming - leetcode [动态规划]的更多相关文章
- [LeetCode] questions conclusion_ Dynamic Programming
Questions: [LeetCode] 198. House Robber _Easy tag: Dynamic Programming [LeetCode] 221. Maximal Squar ...
- Python算法之动态规划(Dynamic Programming)解析:二维矩阵中的醉汉(魔改版leetcode出界的路径数)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_168 现在很多互联网企业学聪明了,知道应聘者有目的性的刷Leetcode原题,用来应付算法题面试,所以开始对这些题进行" ...
- [算法]动态规划(Dynamic programming)
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4603173.html Dynamic Programming的Programming指的不是程序而是一种表格 ...
- [LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 动态规划Dynamic Programming
动态规划Dynamic Programming code教你做人:DP其实不算是一种算法,而是一种思想/思路,分阶段决策的思路 理解动态规划: 递归与动态规划的联系与区别 -> 记忆化搜索 -& ...
- 6专题总结-动态规划dynamic programming
专题6--动态规划 1.动态规划基础知识 什么情况下可能是动态规划?满足下面三个条件之一:1. Maximum/Minimum -- 最大最小,最长,最短:写程序一般有max/min.2. Yes/N ...
- 动态规划(Dynamic Programming)算法与LC实例的理解
动态规划(Dynamic Programming)算法与LC实例的理解 希望通过写下来自己学习历程的方式帮助自己加深对知识的理解,也帮助其他人更好地学习,少走弯路.也欢迎大家来给我的Github的Le ...
- 动态规划系列(零)—— 动态规划(Dynamic Programming)总结
动态规划三要素:重叠⼦问题.最优⼦结构.状态转移⽅程. 动态规划的三个需要明确的点就是「状态」「选择」和「base case」,对应着回溯算法中走过的「路径」,当前的「选择列表」和「结束条件」. 某种 ...
- 动态规划 Dynamic Programming
March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...
随机推荐
- js chart
如何在我们项目中利用开源的图表(js chart) 最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长! 这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一 ...
- [原创]opencv实现图像拼接,制做全景图
转载请注明:http://www.cnblogs.com/ausk/p/3332255.html 调用opencv2.4.6中的库函数,实现图像的拼接功能,傻瓜式拼接,不需要太多的专业知识.. ...
- 使用Guava进行函数式编程
本文翻译自Getting Started with Google Guava这本书,如有翻译不足的地方请指出. 在这一章,我们开始注意到使用Guava进行编写代码会更加简单.我们将看看如何使用Guav ...
- Hackers’ Crackdown-----UVA11825-----DP+状态压缩
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Python学习入门基础教程(learning Python)--6 Python下的list数据类型
1. List是数组么? 答案是: 不是!Python 里面有一个非常强大的数据类型list.他什么都能装下!list里面既可以支持 int类型,也可以支持str类型. >>> li ...
- Android开发(30)--AutoCompleteTextView和MultiAutoCompleteTextView自动提示输入内容
首先大家都见过类似这种效果, AutoCompleteTextView是实现动态匹配输入的内容 下面就通过一个实例来说明AutoCompleteTextView,同样,AutoCompleteText ...
- 基于Spark的用户行为路径分析
研究背景 互联网行业越来越重视自家客户的一些行为偏好了,无论是电商行业还是金融行业,基于用户行为可以做出很多东西,电商行业可以归纳出用户偏好为用户推荐商品,金融行业可以把用户行为作为反欺诈的一个点,本 ...
- C#中的文件操作1
1. 文件操作常用相关类 a)File //操作文件,静态类,对文件整体操作.拷贝.删除.剪切等. b)Directory //操作目录(文件夹),静态类 c)Di ...
- Python版C语言词法分析器
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from Tkinter import * from tkFont import * from ...
- MyBatis:打印SQL 日志
配置Log4J比较简单, 比如需要记录这个mapper接口的日志: package org.mybatis.example; public interface BlogMapper { @Select ...