1265:最长公共子序列
【题目描述】
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1,x2,…,xm>
,则另一序列Z=<z1,z2,…,zk>是X的子序列是指存在一个严格递增的下标序列<i1,i2,…,ik>
,使得对于所有j=1,2,…,k有:
Xij=Zj
例如,序列Z=<B,C,D,B>是序列X=<A,B,C,B,D,A,B>的子序列,相应的递增下标序列为<2,3,5,7>。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X=<A,B,C,B,D,A,B>和Y=<B,D,C,A,B,A>,则序列<B,C,A>是X和Y的一个公共子序列,序列 <B,C,B,A>也是X和Y的一个公共子序列。而且,后者是X和Y的一个最长公共子序列.因为X和Y没有长度大于4的公共子序列。
给定两个序列X=<x1,x2,…,xm>
和Y=<y1,y2….yn>
.要求找出X和Y的一个最长公共子序列。
【输入】
共有两行。每行为一个由大写字母构成的长度不超过1000的字符串,表示序列X和Y。
【输出】
第一行为一个非负整数。表示所求得的最长公共子序列的长度。若不存在公共子序列.则输出文件仅有一行输出一个整数0。
【输入样例】
ABCBDAB BDCABA
【输出样例】
4
【提示】
最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。字符串长度小于等于1000。
// Created on 2020/2/16/*#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <climits>*/
#include <bits/stdc++.h>using namespace std;typedef long long ll;
const int idata=1000+5;
const int idata2=100+5;
int n,m;
ll flag;
int minn=INT_MAX,maxx=-1;
int cnt[idata][idata];
//int len[idata];
//int dp[idata][idata];
//int judge;
//ll sum[idata];
//int length;
//int x[idata],y[idata];int main()
{int i,j;//char str1[idata],str2[idata];string str1,str2;cin>>str1>>str2;int len1=str1.length();int len2=str2.length();for(i=1;i<=len1;i++){for(j=1;j<=len2;j++){cnt[i][j]=max(cnt[i][j-1],cnt[i-1][j]);if(str1[i-1]==str2[j-1])cnt[i][j]=max(cnt[i-1][j-1]+1,cnt[i][j]);}}cout<<cnt[len1][len2]<<endl;/*for(i=0;i<=len1;i++){for(j=0;j<=len2;j++)cout<<cnt[i][j]<<" ";cout<<endl;}*/return 0;
}
1265:最长公共子序列相关推荐
- 信息学奥赛一本通 1265:【例9.9】最长公共子序列
[题目链接] ybt 1265:[例9.9]最长公共子序列 [题目考点] 1. 动态规划:线性动规 最长公共子序列 [解题思路] 1. 状态定义 集合:X.Y两序列的公共子序列 限制:子序列在X,Y中 ...
- 动态规划——1265:【例9.9】最长公共子序列
1265:[例9.9]最长公共子序列 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 12140 通过数: 6454 [题目描述] 一个给定序列的子序列是在该序列中删去若干元素后得 ...
- 1265:【例9.9】最长公共子序列 LCS 朴素做法O(n*2)
分析 最长公共子序列的模板题,参考视频:最长公共子序列 - 动态规划: 如果第一个序列的第i个字符,与第二个序列的第j个字符相等时,则i,j这个点的dp值为左上角的dp值+1:否则为,该点上面那个点和 ...
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...
- 【动态规划】最长公共子序列与最长公共子串
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- POJ 3080 多个串最长公共子序列
求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...
- java实现最长连续子序列_最长公共子序列 ||
问题:在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来,因为最长公共子序列可能不只一种. 难点:输出一个最长公共子序列并不难,难点在于输出所有的最长公共子序列,我们需要在 ...
- 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence
动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...
- 触类旁通,经典面试题最长公共子序列应该这么答
作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经 ...
最新文章
- 科大讯飞与优刻得、寒武纪等联合设立合肥智能语音创新发展有限公司
- 详解布隆过滤器的原理、使用场景和注意事项
- PHP酒店管理demo案例(数组遍历)
- SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
- 解决checkbox与对应文字不对齐的问题
- redis 和 数据库mysql之间的关系
- freecodecamp_关于freeCodeCamp-常见问题
- ctf 绕过php,Bugku-CTF之各种绕过
- 【Kafka】Kafka如何彻底删除Kafka中的topic
- 一些常用的场景进行描述分析(权限管理、6个典型场景)
- 关于中国男女的一些私密数据......
- pcb 布线电容 影响延时_浅谈PCB布局布线对TVS防护效果的影响
- Java连接MySQL数据库及简单操作代码
- uva1583-digit generator
- 怎么用imp命令把dmp文件从本地导入到远处的数据库服务器,用imp命令导入dmp文件后,数据库什么也没有...
- MATLAB如何导出高分辨率的模型图片、PDF
- 揭开均线系统的神秘面纱_揭开定价创造力的黑暗艺术神秘面纱
- php制作水印图片,PHP实例制作水印图片
- HTML,js,jQuery的1+S证书学习资料
- 读懂电影专业名词(转自CMCT-PT)