1 // 前面我们用(n^2)复杂度dp求了最长公共子序列 2 // 当时dp数组定义如下: 3 // dp[i]:以末尾数结尾的最长公共子序列的长度 4 // 每次都利用前一次的结果,可以轻松求得以最后一个数为最结尾的最长公共子序列的长度 5 // if(a[i]>a[j] && dp[i]<=d ...
分类:
其他好文 时间:
2020-02-04 17:19:01
阅读次数:
64
1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 6 const int max_n = 1000 + 2; 7 const int max_a = 1e6 + 10; 8 9 int n; 10 int a[m ...
分类:
其他好文 时间:
2020-02-04 16:07:37
阅读次数:
72
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。 Input 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) Ou ...
分类:
其他好文 时间:
2020-02-02 17:52:20
阅读次数:
65
分析: 完整代码: // 最长公共子序列 #include <stdio.h> #include <algorithm> using namespace std; const int N = 100; char A[N], B[N]; int dp[N][N]; int main() { freop ...
分类:
其他好文 时间:
2020-02-01 14:15:10
阅读次数:
61
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列。 输入格式 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列。 输出格式 一个数,即最长公共子序列的长度 找出两个序列共同出现的元素,每个元素包括两个维度,一个为在a中的位置,一个为在b中的位置,我们首先保证一个 ...
分类:
其他好文 时间:
2020-01-31 12:35:51
阅读次数:
58
最长公共子序列(进阶版) 题目 : "https://www.luogu.com.cn/problem/P1439" 题解 : 将一个序列离散化,离散化只有变成1 2 3 4 5 ...... 则要求最长公共子序列就会转化为求最长上升子序列,按照进阶版的二分进行查找添加,更新值就会成为结果。注意题目 ...
分类:
其他好文 时间:
2020-01-31 01:03:26
阅读次数:
87
#include <iostream> #include <algorithm> #include <string> #include <cstring> #include <cstdio> #define MAX 1005 using namespace std; int ans[MAX][MAX ...
分类:
其他好文 时间:
2020-01-28 19:21:43
阅读次数:
85
LCS,LIS,LICS算法 首先,要理解下子串子序列的含义: 1. 子串:来源于原序列连续的一段。 2. 子序列:来源于原序列中元素相对顺序不变的一段,不要求元素连续。 LCS(最长公共子序列) 给定两个序列A、B,设C[i, j]=LCS(Ai, Bj),其中Ai、Bj分别表示A从首元素到第i个 ...
分类:
编程语言 时间:
2020-01-28 17:31:03
阅读次数:
80
一个字符串如果从左往右读和从右往左读都一样,那么这个字符串是一个回文串。例如:"abcba","abccba"。 蒜头君想通过添加字符把一个非回文字符串变成回文串。例如:"trit",可以添加一个i变成回文串"tirit"。 请你用程序计算出,对于一个给定的字符串,最少需要添加几个字符,才能变成回文 ...
分类:
其他好文 时间:
2020-01-17 23:34:38
阅读次数:
148
声明:该讲解来自计蒜客,仅供个人学习使用 - ...
分类:
其他好文 时间:
2020-01-17 00:01:26
阅读次数:
85