动态规划算法似乎是一种很高深莫测的算法,你会在一些面试或算法书籍的高级技巧部分看到相关内容,什么状态转移方程,重叠子问题,最优子结构等高大上的词汇也可能让你望而却步。 而且,当你去看用动态规划解决某个问题的代码时,你会觉得这样解决问题竟然如此巧妙,但却难以理解,你可能惊讶于人家是怎么想到这种解法的。 ...
分类:
其他好文 时间:
2020-07-26 19:30:56
阅读次数:
65
前言 今天开始学习动态规划,一共有三节,分别是:初识动态规划、动态规划理论、动态规划实战。今天这一节就是初识动态规划。 动态规划比较适合用来求解最优问题,比如最大值、最小值等等。它可以非常显著地降低时间复杂度,提高代码的执行效率。 下面会通过两个非常经典的动态规划问题模型来展示为什么需要动态规划,以 ...
分类:
编程语言 时间:
2020-07-26 02:04:55
阅读次数:
112
题目链接 91. 解码方法 题目分析 很明显的动态规划题,但是我在想状态转移方程的时候脑抽筋了,非得在dp[i-2]和dp[i-1]中取一个最大值然后加1,导致整个题没办法快速的解决。 其实这个题正解应该是这样的: 对于每一个字符,我们都应该判断单独一个字符和两个字符构成数字的情况 如果单独一个字符 ...
分类:
其他好文 时间:
2020-07-25 09:41:22
阅读次数:
56
动态规划的单调性优化 决策集合优化 $\mathrm\(的时候决策集合只扩大不减小,直接把最大值\)/\(最小值\)/$累加和记下来就好了. 例如:\(\mathrm{LCIS\ CH5101}\),\(f_{i,j}=\max\limits_{0\leq k<j,B_k<A_i}\{f_{i-1, ...
分类:
其他好文 时间:
2020-07-24 19:08:50
阅读次数:
90
1 2 5 6 3 2 4 2 4 3 3 1 5 1 2 1 对于第一行的元素,因为只能向右移动,所以路径是固定的,同样对于第一列元素,路径也是固定的。 而对于非第一行与第一列的元素,我们只要找到到它上方和左侧元素的最小路径即可,因为求最短路径将会与其相邻元素有关,所以可以使用动态规划算法。 步骤 ...
分类:
移动开发 时间:
2020-07-24 09:47:25
阅读次数:
179
[编程题] lc:最小路径和 题目描述 输入输出 思路 原地动态 规划 Java代码 class Solution { //方法:原地dp的动态规划 public int minPathSum(int[][] grid) { for(int i=0;i<grid.length;i++){ for(i ...
分类:
其他好文 时间:
2020-07-24 09:35:13
阅读次数:
66
64. 最小路径和 /** * @author realzhaijiayu on 2020/7/23 * @project leetcode */ /* 典型的动态规划问题 二维的 dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]; 一维的 dp ...
分类:
其他好文 时间:
2020-07-23 23:00:16
阅读次数:
66
第一类 · 树形动态规划 问题一:求树上最大权独立集 题意描述 有一棵大小为 $n$ 的树,其中有 $n-1$ 组点有连边,请找到大小最大的一个集合,使得树中以编号为集合内元素的节点两两无直接连边。 $n \le 5000$。 (简单讲,就是从一棵树内找到尽可能多的点,并且这些点两两没有连边) 算法 ...
分类:
其他好文 时间:
2020-07-21 23:20:52
阅读次数:
86
1. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb"动态规划1、当 i 和 j 的差距等于小于 ...
分类:
其他好文 时间:
2020-07-21 14:24:39
阅读次数:
91
题目如下: 定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。例子: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 ...
分类:
其他好文 时间:
2020-07-21 13:45:13
阅读次数:
77