1 例如:一个字符串 awbcdewgh 2 3 他的子串: awbc、awbcd、awbcde ...很多个子串 ,但是都是连续在一起 。//substring 4 5 他的子序列:(subsequence ) abc 、abcd、 abcde ... 很多个子序列 ,但是子序列中的字符在字符串中不一定是连在一起的,而是删除其中若干个, 但是子序列一定是单调的(即字符之间ASC...
转载
2018-07-28 11:54:00
110阅读
2评论
子序列问题:dp数组长度+1是考虑了空数组的情况,遍历从1开始 ###最长不含重复字符的子字符串(动态规划+哈希表) class Solution { public: int lengthOfLongestSubstring(string s) { // 选择特定条件子串问题:滑动窗口左右指针()+ ...
转载
2021-07-19 02:19:00
101阅读
2评论
这个题真的是神题,绝对不是绿题 分析: 这个题最长上升子序列 我会dilworth! 假了,这个题的一个很关键的地方就是用这个看似无用的性质 我们发现这个肯定是下去一个接着上来 然后会死掉无数贪心 一开始这题标签dp,不会做,然后转图论,不会,发现二分图可以转回dp 然而我们发现这个dp是个背包,所 ...
转载
2021-09-29 09:13:00
97阅读
2评论
子序列问题是常见的算法问题,而且并不好解决。首先,子序列问题本身就相对子串、子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解相关的算法问题了。而且,子序列问题很可能涉及到两个字符串,比如让你求两个字符串的 最长公共子序列,如果没有一定的处理经验,真的不容易想出来。所以本文就来扒一扒子序列问题的套路,其实就有两种模板,相关问题只要往这两种思路上想,十拿九稳。一
原创
2021-04-07 10:41:52
956阅读
一、基础for(int i=1;i<=n;i++){ for(int j=1;j<i;j++) if(a[j]<a[i]) f[i]=max(f[i],f[j]+1);
各种子序列:最长上升子序列(LISLIS):Longest Increasing Subsequence最长连续序列(LCSLCS):Longest Consecutive Sequence最长连续递增序列(LCISLCIS):Longest Continuous Increasing Subsequence最长公共子序列(LCSLCS):Longest Common Subsequencelee
转载
2020-06-06 23:25:17
1111阅读
最长公共子序列 例:求两个字符串最长公共子序列长度。如a[] = {"abcedf"}, b[] = {"abtrenf},则最长公共子序列为abef,长度为4 伪代码: 代码 这是子序列的一个最基本的问题,从这个问题可以衍生出很多相关的子序列问题。 最长回文子序列例:有一个字符串,求最少删去几个字
原创
2021-05-29 18:21:20
123阅读
传送门子序列的定义:对于一个序列a=a1,a2,…an。则非空序列a’=ap1,ap2…apm为a的一个子序列,其中
题源:leetcode 链接:https://leetcode-cn.com/problems/is-subsequence/ 使用双指针法很简单,而且运行效率也很高。这里不贴代码了,学习一下动态规划的解法; 1 //dp解法 2 bool isSubsequence(string s, strin ...
转载
2021-07-28 14:39:00
121阅读
402. 移掉 K 位数字1218. 最长定差子序列
Problem Description 一个只包含非负整数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列{a1, a2, …,aN},我们可以得到一些上升的子序列{ai1, ai2, …, aiK},这里1 ≤ i1 < i2 <…< iK ≤ N。例如:对于序列{1, 7, 3, 5, 9, 4, 8},有它...
原创
2021-07-30 14:06:33
132阅读
Problem Description 一个只包含非负整数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列{a1, a2, …,aN},我们可以得到一些上升的子序列{ai1, ai2, …, aiK},这里1 ≤ i1 < i2 <…< iK ≤ N。例如:对于序列{1, 7, 3, 5, 9, 4, 8},有它...
原创
2022-02-28 13:40:48
18阅读
子序列问题是常见的算法问题,而且并不好解决。首先,子序列问题本身就相对子串、子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举你都不一定会,更别说求解相关的算法问题了。而且,子序列问题很可能涉及到两个字符串,比如前文「最长公共子序列」,如果没有一定的处理经验,真的不容易想出来。所以本文就来扒一扒子序列问题的套路,其实就有两种模板,相关问题只要往这两种思路上想,十拿九稳。一般来说,
原创
2020-12-23 15:25:36
332阅读
对于序列 \(a(n)\),我们称 \(b(m)\) 为 \(a\) 的子序列,当且仅当存在 \(c(m)\) 使得 \(\forall 1\le i<m,c_i< c_{i + 1}\) 并且 \(\forall 1\le i \le m, a_{c_i} = b_i\)。 一个序列的子序列有 \ ...
转载
2021-10-01 20:05:00
163阅读
2评论
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列. 如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2试题来源: 排序子序列#include
题目:题解:线性dp#include <bits/stdc++.h>using namespace std;long long a[100005],f[100005],con[100005];long long mod=1e9+7;int
1.最长回文子序列 要求:
给定字符串,求它的最长回文子序列长度。回文子序列反转字符顺序后仍然与原序列相同。例如字符串abcdfcba中,最长回文子序列长度为7,abcdcba或abcfcba。 思路:
动态规划思想 对于任意字符串,如果头尾字符相同,那么字符串的最长子序列等于去掉首尾的字符串的最长子序列加上首尾;如果首尾字符不同,则最长子序列等于去掉头的字符串的最长子序列和去掉尾的字符串的