![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划(DP)
文章平均质量分 73
动态规划(DP):
背包问题
最长上升子序列模型
状态机模型
状态压缩DP
线性DP
区间DP
计数类DP
数位统计DP
树形DP
记忆化搜索
单调队列优化的DP问题
....
carroll18
你想要拥有你从未有过的东西,你必须去做你从未做过的事情。
展开
-
动态规划之单调队列优化的DP问题详细介绍和例题练习
单调队列优化的DP问题单调队列优化的DP问题例题原创 2021-05-06 18:24:16 · 389 阅读 · 0 评论 -
动态规划之数位DP详细介绍和例题练习
数位DP数位DP例题原创 2021-05-06 12:07:30 · 341 阅读 · 0 评论 -
动态规划之树形DP详细介绍和例题练习
树形DP树形DP例题原创 2021-05-05 20:35:08 · 218 阅读 · 0 评论 -
动态规划之区间DP详细介绍和例题练习
区间DP区间DP例题石子合并import java.util.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); in.nextLine(); String[] s = in.nextLine().split(" ");原创 2021-05-05 16:13:25 · 250 阅读 · 0 评论 -
动态规划之状态压缩DP详细介绍和例题练习
状态压缩DP状态压缩DP例题练习原创 2021-05-04 14:30:47 · 1391 阅读 · 0 评论 -
动态规划之状态机模型详细介绍和例题练习
状态机模型状态机模型例题设计密码状态定义:dp[i][j]:写到密码串前 i 个字母,且当前跳到 kmp 的第 j 个状态的方案数量状态转移方程: dp[i + 1][u] = dp[i + 1][u] + dp[i][j]。这里的状态定义是已经有的长度,不包括当前枚举的字母。 也可以理解为原来的 dp[i][j] = dp[i-1][j] 这类的,都是拿后继更新前驱。然而本题是用当前这个后继状态来更新它能到达的所有后继状态。Java实现代码如下:import java.util.原创 2021-05-04 10:49:16 · 705 阅读 · 0 评论 -
LeetCode股票类问题集体秒
文章目录解题框架[121. 买卖股票的最佳时机](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/)[122. 买卖股票的最佳时机 II](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/)[309. 最佳买卖股票时机含冷冻期](...原创 2020-05-19 11:34:20 · 168 阅读 · 0 评论 -
动态规划之背包类问题详细介绍(代码模板)和例题练习
文章目录0-1 背包问题416. 分割等和子集完全背包问题518. 零钱兑换 II多重背包问题混合三种背包问题二维费用的背包问题分组的背包问题有依赖的背包问题0-1 背包问题416. 分割等和子集原题地址class Solution { public boolean canPartition(int[] nums) { int len = nums.length...原创 2020-05-19 11:26:37 · 580 阅读 · 0 评论 -
300. 最长上升子序列
class Solution { public int lengthOfLIS(int[] nums) { if(nums.length==0) return 0; int[] dp = new int[nums.length]; dp[0] = 1; int maxans = 1; for(int i = 1;i<nums.length;i++){ int maxval = 0; .原创 2020-05-17 14:27:04 · 95 阅读 · 0 评论 -
动态规划(DP)
70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4....原创 2020-05-16 23:45:38 · 682 阅读 · 0 评论 -
647. 回文子串
class Solution { int count = 0; public int countSubstrings(String s) { for(int i = 0;i<s.length();i++){ extendPalindrome(s,i,i); //回文串长度为奇数 extendPalindrome...原创 2020-05-07 13:37:00 · 143 阅读 · 0 评论 -
64. 最小路径和
class Solution { public int minPathSum(int[][] grid) { int m = grid.length,n = grid[0].length; int[][] dp = new int[m][n];//到对应(m,n)位置的最小值 dp[0][0] = grid[0][0]; f...原创 2020-04-17 21:02:43 · 107 阅读 · 0 评论 -
面试题47. 礼物的最大价值
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可...原创 2020-04-09 21:16:07 · 183 阅读 · 0 评论