题目描述 image.png 考点 动态规划 解题思路 使用动态规划:我们从左上角到右下角进行一次动态搜索,再从右下到左上进行一次动态搜索。两次动态搜索即可完成四个方向的查找; 解题思路.png 代码实现 class Solution { public: vector<vector<int>> up ...
分类:
其他好文 时间:
2020-12-04 11:00:34
阅读次数:
4
前两天写一篇长达8000字的关于动态规划的文章告别动态规划,连刷40道动规算法题,我总结了动规的套路这篇文章更多讲解我平时做题的套路,不过由于篇幅过长,举了4个案例之后,没有讲解优化,今天这篇文章就来讲解下,对动态规划的优化如何下手,并且以前几天那篇文章的题作为例子直接讲优化,如果没看过的建议看一下(不看也行,我会直接给出题目以及没有优化前的代码):告别动态规划,连刷40道动规算法题,我总结了动规
分类:
其他好文 时间:
2020-12-01 12:14:32
阅读次数:
4
简单动态规划:dp[i]是以位置i结束的最大和,动态转移方程dp[i] = max(dp[i-1]+array[i], array[i]),dp中的最大值即是结果。 class Solution { public: int FindGreatestSumOfSubArray(vector<int> ...
分类:
编程语言 时间:
2020-11-21 11:46:10
阅读次数:
5
首先说明一个问题,简单阐述一下递归,分治算法,动态规划,贪心算法这几个东西的区别和联系,心里有个印象就好。 递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解题思想还是离不开递归),解决更具体问题的两类算法思想;贪心 ...
分类:
其他好文 时间:
2020-11-20 11:26:06
阅读次数:
5
1 #include <iostream> 2 #include <cstdio> 3 #include <memory.h> 4 using namespace std; 5 const int INF=0x3f3f3f3f,city=4; 6 int main(){ 7 int a[city][ ...
分类:
其他好文 时间:
2020-11-19 12:53:22
阅读次数:
10
题目描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB。则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA。序列无须是连续的,重复即可。 解题思路 暴力遍历 动态规划 暴力遍历 ...
分类:
其他好文 时间:
2020-11-16 13:50:06
阅读次数:
9
本组囊括数组相关题目,且只包括两道有关杨辉三角的问题。 118. Pascal's Triangle 题目描述:简单 首先要知道杨辉三角:每个数等于它左上方和右上方两数之和,那么如果能够知道一行杨辉三角,我们就可以根据每对相邻的值轻松地计算出它的下一行。类似这种迭代的思想,官方也把它归到动态规划的思 ...
分类:
编程语言 时间:
2020-11-16 13:13:24
阅读次数:
10
1.动态规划的概念及理解 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。我的个人理解如下:将一个复杂的大问题拆分成若干个小问题并求出这些小问题的解,记录下来。最后借由这些小问题的解推导出原始大问题的答案。 2.示例 2.1 上台阶 共十级台阶 ...
分类:
其他好文 时间:
2020-11-16 12:57:23
阅读次数:
8
思路 比较明显的动态规划问题。状态转移方程为:f(x, y) = grid(x,y) + max {f(x-1,y), f(x, y-1)} 。 优化:这里不使用额外的数组f,而就地更改grid数组,可以将空间复杂度降为O(1)。 1 class Solution { 2 public: 3 int ...
分类:
其他好文 时间:
2020-11-13 13:08:20
阅读次数:
7
一、分割类问题 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 解释: 13 ...
分类:
其他好文 时间:
2020-11-12 13:24:07
阅读次数:
8