04年的省选这么water吗,开个滚动数组算了 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(register int a = (b); a <= (c); ++ a) #define nR(a,b,c) for(register int a = (b);…
[AHOI2004]奇怪的字符串 题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 01010101010 00000011111 输出样例#1: 6 输入样例#2: 01011 010010101111111111 输出样例#2: 5-_-||,题目直接告诉你求最长公共子序列:只需用一下滚动数组省点空间就行了: #include<cstdio> #incl…
P2543 [AHOI2004]奇怪的字符串 题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 01010101010 00000011111 输出样例#1: 6 输入样例#2: 01011 010010101111111111 输出样例#2: 5 代码: #include<cstdio> #include<cstdlib> #include&l…
题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 01010101010 00000011111 输出样例#1: 6 输入样例#2: 01011 010010101111111111 输出样例#2: 5 最长公共子序列裸题屠龙宝刀点击就送 #include <iostream> #include <cstring> #include <cs…
LCS //Writer:GhostCai && His Yellow Duck #include<iostream> #include<cstring> #define MAXN 5000 using namespace std; char s[MAXN],t[MAXN]; int lens,lent; int f[MAXN][MAXN]; int main() { cin>>s+1>>t+1; memset(f,0,sizeof(f));…
题目描述 输入输出格式 输入格式: 输入文件中包含两个字符串X和Y.当中两字符串非0即1.序列长度均小于9999. 输出格式: X和Y的最长公共子序列长度. 输入输出样例 输入样例#1: 复制 01010101010 00000011111 输出样例#1: 复制 6 输入样例#2: 复制 01011 010010101111111111 输出样例#2: 复制 5 /*DP 我们可以知道,在每一个位置有三种状态,i表示a串下标,j表示b串下标. 1.a[i]==b[i] --> dp[i][j]=…
题目传送门 解题思路: 本题朴素求最长公共子序列即可,但是空间不够,怎么办呢? 空间不够,滚动数组来救 AC代码: #include<iostream> #include<cstdio> using namespace std; string l,l1; ][],m; inline int max(int a,int b) { if(a >= b) return a; return b; } int main() { cin >> l >> l1; ;…
P1852 奇怪的字符串 题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00000011111 输出样例#1: 复制 6 说明 01串长度≤10000 思路:lcs #include<cstdio> #include<cstring> #include<iostream> #include<algorithm>…
原文:算法起步之动态规划LCS 前一篇文章我们了解了什么是动态规划问题,这里我们再来看动态规划另一个经典问题,最长公共子序列问题(LCS),什么是子序列,我们定义:一个给定序列将其中的0个或者多个元素去掉之后得到的序列就是他的子序列.例如序列x包含(a,b,c,b,d,a,b)那么序列y(b,c,d,b)就是x的一个子序列.公共子序列则是两个序列的公共的子序列,而最长公共子序列则是从两个序列的公共子序列中挑选出长度最长的子序列. 我们用我们说的动态规划的四步来分析这个问题.一刻画最长公共子序列的…
51Nod 1092 数据结构暑假作业上出现的一题,学习了一下相关算法之后,找到了oj测试能AC. 1.回文串是一种中心对称的结构,这道题可以转变为求最长回文子序列长度的题目.(子序列:可以不连续) 2.可以得到公式: ans(最少插入字符)= 字符串总长度 - 最长回文子序列长度 3.如何求最长回文子序列的长度呢? wsx dalao的思路是对区间进行维护(我暂时还写不出来),更一般的做法是动态规划(Dynamic Programming). dp 粗略的可以理解为一个状态向另一个状态的转移.…