LCS (动态规划)
LCS
Problem Statement
You are given strings ss and tt. Find one longest string that is a subsequence of both ss and tt.
Notes
字符串的子序列是通过从中删除零个或多个字符并连接其余字符而不更改顺序而获得的字符串。xxxx
Constraints
- ss and tt are strings consisting of lowercase English letters.
- 1 \leq |s|, |t| \leq 30001≤∣s∣,∣t∣≤3000
Input
Input is given from Standard Input in the following format:
ss tt
Output
Print one longest string that is a subsequence of both ss and tt. If there are multiple such strings, any of them will be accepted.
Sample 1
Inputcopy | Outputcopy |
---|---|
axyb abyxb |
axb |
The answer is axb
or ayb
; either will be accepted.
Sample 2
Inputcopy | Outputcopy |
---|---|
aa xayaz |
aa |
Sample 3
Inputcopy | Outputcopy |
---|---|
a z |
|
The answer is (an empty string).
Sample 4
Inputcopy | Outputcopy |
---|---|
abracadabra avadakedavra |
aaadara |
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int p[3005][3005];
char s[3005],t[3005];int main()
{cin>>s>>t;int ls=strlen(s)+2;int lt=strlen(t)+2;memset(p,0,sizeof p);int fag=1;for(int i=2;i<lt;i++){for(int j=2;j<ls;j++){if(t[i-2]==s[j-2]){p[i][j]=p[i-1][j-1]+1;}else{p[i][j]=max(p[i-1][j],p[i][j-1]);}// cout<<p[i][j]<<" ";}//cout<<endl;}char ans[3005];int k;k=p[lt-1][ls-1];int i=lt-1;int j=ls-1;while(k>0){if(p[i][j]==p[i-1][j]){i--;}else if(p[i][j]==p[i][j-1]){j--;}else{ans[k]=s[j-2];// cout<<ans[k];i--;j--;k--;}}for(i=1;i<=p[lt-1][ls-1];i++){cout<<ans[i];}return 0;
}
LCS (动态规划)相关推荐
- [Leetcode][第1143题][JAVA][最长公共子序列][LCS][动态规划]
[问题描述][中等] [解答思路] 时间复杂度:O(N^2) 空间复杂度:O(N^2) class Solution {public int longestCommonSubsequence(Stri ...
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...
- 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...
1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...
- LCS/最长公共子序列/最长公共子串 实现 Python/Java
参考 http://blog.csdn.net/u012102306/article/details/53184446 http://blog.csdn.net/hrn1216/article/det ...
- LCS最长公共子序列(最优线性时间O(n))
这篇日志主要为了记录这几天的学习成果. 最长公共子序列根据要不要求子序列连续分两种情况. 只考虑两个串的情况,假设两个串长度均为n. 一,子序列不要求连续. (1)动态规划(O(n*n)) (转自:h ...
- java实现最长连续子序列_最长公共子序列/最长公共子串 Python/Java实现
关注我的微信公众号:后端技术漫谈 不定期推送关于后端开发.爬虫.算法题.数据结构方面的原创技术文章,以及生活中的逸闻趣事. 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边 ...
- 2014年9月28日 18:35:01
着实是有好几天没有动手写写自己的博客了.这些天感觉自己是被别人的事情搞的一团糟,结果自己反倒是帮不上什么忙的.还是算了吧,先将自己的东西好好的忙好,毕竟还是得自己有能力才能够帮到别人的,没办法,物竞天 ...
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串 (转)...
作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11969497. 声明:版权所有,转载请注明出处,谢谢 ...
- SDU程序设计思维实践题目总结
题目来源及链接 题目名称及讲解博客链接 涉及算法 原题以及原题链接 第二周作业 Maze BFS POJ-3984 Pour water BFS POJ-1606 第二周实验 化学 模拟 codefo ...
- 2020 web前端面试题及答案大全
css相关 1. 万能居中 1.margin: 0 auto;水平 2.text-align: center;水平 3.行高,垂直 4.表格,center,middle:水平垂直 5.display: ...
最新文章
- 优化数据库的方法及SQL语句优化的原则
- 吉大20春学期C语言程序设计作业二,吉大18春学期《C语言程序设计》在线作业二【答案】...
- cgi web 调用多次启动_简单说明CGI和动态请求是什么
- tensorflowgpu利用率为0_奥普特冲科:曾侵犯竞争对手商业机密,产能利用率或虚高...
- 实战渗透 | 向吃鸡外挂站开炮
- SAP Spartacus deprecation for 4.0 需要注意的一些事项
- 硬核,这个充电宝居然烧煤气!
- 09-排序1 排序 (25 分)
- MySQL日期、字符串、数值型转换
- MIT6.830 lab5 B+ Tree Index 实验报告
- Barcode for Mac(条形码生成器)
- 采用计算机发布调度命令时 必须严格遵守,调度命令规范格式(公文命令).doc...
- 2008 r2安装总是跳出 server sql_Microsoft SQL Server 2008 R2 安装遇到的问题
- 导数乘法/除法法则的证明
- 关于css的字体设置font-famliy多值显示规则,微软雅黑侵权问题,微软雅黑不生效问题
- 桌面cpu与服务器cpu天梯,桌面CPU性能排行 CPU天梯图2017年6月最新版
- 基于MATLAB波的叠加仿真模拟
- Python带我飞:50个有趣而又鲜为人知的Python特性
- svg html g标签id,svg是什么?svg常用的方法(附代码)
- 简述网桥的特点_网桥的工作原理和特点是什么?