
动态规划
KRYON!
这个作者很懒,什么都没留下…
展开
-
[leetcode]376. 摆动序列
给定一个整数序列,返回作为摆动序列的最长子序列的长度,通过从原始序列中删除一些(也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序这个删除是指删除上升后又接着上升的元素1、暴力:超时2、动态规划:up[i]是目前为止最长的以第i个元素结尾上升的摆动序列的长度。down[i]是目前为止最长的以第i个元素结尾下降的摆动序列的长度。class Solution {publ...转载 2020-02-21 22:36:40 · 157 阅读 · 0 评论 -
[leetcode]746. 使用最小花费爬楼梯
动态规划:dp[i]表示爬上第i级楼梯的最小花费class Solution {public: int minCostClimbingStairs(vector<int>& cost) { cost.push_back(0); //后面加个0,将阶梯顶视为第n层(没加0前的第n层,加0后的第n-1层) int n = cost....原创 2020-02-20 18:17:20 · 194 阅读 · 0 评论 -
[leetcode]70. 爬楼梯
动态规划:dp[i]:表示到第i阶有多少种爬法dp[0] = 0dp[1] = 1:1;dp[2] = 2:1+1;2;dp[3] = 3:1 + 1 + 1‾\underline{1}1; 2 + 1‾\underline{1}1; 1 + 1‾\underline{1}1;爬上 i−1 阶楼梯的方法数量。因为再爬1阶就能到第i阶爬上 i−2 阶楼...原创 2020-02-20 17:53:38 · 127 阅读 · 0 评论 -
[leetcode] 140. 单词拆分 II
class Solution { int n; vector<string>res; unordered_map<int,set<int>>hash; string s; void dfs(int start, string temp) { if(start == n) { ...原创 2020-02-19 22:41:08 · 128 阅读 · 0 评论 -
[leetcode]139. 单词拆分
1、递归+备忘录class Solution { string s; vector<string> wordDict; unordered_set<string>m_set; vector<int>memo;//memo[i]表示[i, size()-1]可不可拆分若干个单词连着 1可 0不可 -1不知道 int d...原创 2020-02-19 16:24:25 · 333 阅读 · 0 评论 -
[leetcode]174. 地下城游戏
写了半天从[0][0]开始的,代码有90多行,就过了一个样例。。看了题解,原来只能倒着来。。额额1、题解里写得最简洁的:https://leetcode-cn.com/problems/dungeon-game/solution/c-dp-10xing-by-pjpj/dp[i][j]表示在[i][j]位置需要的最小血量dp[i][j] = max(1, (min(dp[i+1][j...原创 2020-02-17 22:44:48 · 195 阅读 · 0 评论 -
leetcode64. 最小路径和
解法:用动态规划,因为只能向右或向下走,即当当前坐标为[i][j]时,下一步只能是[i][j+1]或[i+1][j],反过来,cost[i][j]为从[0][0]到[i][j]的距离,只能从[i][j-1]或[i-1][j]到[i][j],所以:cost[i][j] = min(cost[i][j-1],cost[i-1][j]) + grid[i][j]class Solution {...原创 2019-12-07 14:58:24 · 97 阅读 · 0 评论 -
[leetcode]5. 最长回文子串
动态规划:class Solution {public: string longestPalindrome(string s) { int len = s.size(); if(len < 2) { return s; } vector<vector<bool&...原创 2020-02-12 23:40:16 · 87 阅读 · 0 评论 -
Bitmasking and Dynamic Programming 实例 :Count ways to assign unique cap to every person
#include<iostream>#include<vector>#include<sstream> //stringstream#include<string>#include<bitset> using namespace std;int main(){ //read int n; cin>>...原创 2020-02-11 16:17:51 · 265 阅读 · 0 评论 -
[leetcode周赛] 1349. 参加考试的最大学生数
解题思路把seats里好座位用1表示,坏座位用0表示,那么每行都是一个二进制串,这个二进制串可以用一个对应的数(这里用十进制)来存储bitSeats[i]: [["#",".","#","#",".","#"], //0 1 0 0 1 0 -> bitSeats[0] = 18 [".","#","#","#","#","."], //1 0 ...原创 2020-02-10 23:46:06 · 429 阅读 · 0 评论 -
[leetcode] 1335. 工作计划的最低难度
class Solution {public: int minDifficulty(vector<int>& jobDifficulty, int d) { int n = jobDifficulty.size(); if(n < d) { return -1; }...原创 2020-02-07 22:34:28 · 315 阅读 · 0 评论 -
leetcode 120. 三角形最小路径和
[ [2], [3,4], [6,5,7], [4,1,8,3]]实际存储:[ [2], [3,4], [6,5,7], [4,1,8,3]]只能向下或右下动态方程:dp[i][j] = min(dp[i-1][j-1],dp[i-1][[j]) + triangle[i][j]写法1:自顶向下class Solut...原创 2019-12-07 17:04:07 · 100 阅读 · 0 评论