【题目描述】

一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列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:最长公共子序列相关推荐

  1. 信息学奥赛一本通 1265:【例9.9】最长公共子序列

    [题目链接] ybt 1265:[例9.9]最长公共子序列 [题目考点] 1. 动态规划:线性动规 最长公共子序列 [解题思路] 1. 状态定义 集合:X.Y两序列的公共子序列 限制:子序列在X,Y中 ...

  2. 动态规划——1265:【例9.9】最长公共子序列

    1265:[例9.9]最长公共子序列 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 12140 通过数: 6454 [题目描述] 一个给定序列的子序列是在该序列中删去若干元素后得 ...

  3. 1265:【例9.9】最长公共子序列 LCS 朴素做法O(n*2)

    分析 最长公共子序列的模板题,参考视频:最长公共子序列 - 动态规划: 如果第一个序列的第i个字符,与第二个序列的第j个字符相等时,则i,j这个点的dp值为左上角的dp值+1:否则为,该点上面那个点和 ...

  4. 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...

    问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...

  5. 【动态规划】最长公共子序列与最长公共子串

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  6. POJ 3080 多个串最长公共子序列

    求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...

  7. java实现最长连续子序列_最长公共子序列 ||

    问题:在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来,因为最长公共子序列可能不只一种. 难点:输出一个最长公共子序列并不难,难点在于输出所有的最长公共子序列,我们需要在 ...

  8. 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence

    动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...

  9. 触类旁通,经典面试题最长公共子序列应该这么答

    作者 |  labuladong 来源 | labuladong(ID:labuladong) [导读]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经 ...

最新文章

  1. 科大讯飞与优刻得、寒武纪等联合设立合肥智能语音创新发展有限公司
  2. 详解布隆过滤器的原理、使用场景和注意事项
  3. PHP酒店管理demo案例(数组遍历)
  4. SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
  5. 解决checkbox与对应文字不对齐的问题
  6. redis 和 数据库mysql之间的关系
  7. freecodecamp_关于freeCodeCamp-常见问题
  8. ctf 绕过php,Bugku-CTF之各种绕过
  9. 【Kafka】Kafka如何彻底删除Kafka中的topic
  10. 一些常用的场景进行描述分析(权限管理、6个典型场景)
  11. 关于中国男女的一些私密数据......
  12. pcb 布线电容 影响延时_浅谈PCB布局布线对TVS防护效果的影响
  13. Java连接MySQL数据库及简单操作代码
  14. uva1583-digit generator
  15. 怎么用imp命令把dmp文件从本地导入到远处的数据库服务器,用imp命令导入dmp文件后,数据库什么也没有...
  16. MATLAB如何导出高分辨率的模型图片、PDF
  17. 揭开均线系统的神秘面纱_揭开定价创造力的黑暗艺术神秘面纱
  18. php制作水印图片,PHP实例制作水印图片
  19. HTML,js,jQuery的1+S证书学习资料
  20. 读懂电影专业名词(转自CMCT-PT)

热门文章

  1. JAVA的安装与卸载
  2. 关闭selinux的方法汇总
  3. 我辛辛苦苦做了一个月的项目,组长年底用来写了晋升PPT
  4. redis之数据倾斜如何处理
  5. Ubuntu下如何查看已安装软件版本
  6. Linux 之软连接
  7. 机器学习:决策树的预剪枝和后剪枝
  8. Python——爬虫抓取图片
  9. Python爬虫爬取Google图片
  10. OTFS-SCMA学习笔记