1006 最长公共子序列Lcs
来源:互联网 发布:论大数据的十大局限 编辑:程序博客网 时间:2024/05/19 19:31
点击打开链接
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。
比如两个串为:
abcicba
abdkscab
ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。
Input
第1行:字符串A第2行:字符串B(A,B的长度 <= 1000)
Output
输出最长的子序列,如果有多个,随意输出1个。
Input示例
abcicbaabdkscab
Output示例
abca
#include<bits/stdc++.h>using namespace std;const int maxn=1010;char a[maxn],b[maxn];int dp[maxn][maxn];vector<char>v;void dfs(int x,int y){//cout<<x<<" "<<y<<endl; if(x==0||y==0){ return; } if(a[x]==b[y]){ v.push_back(a[x]); dfs(x-1,y-1); } else if(dp[x-1][y]<dp[x][y-1]) dfs(x,y-1); else dfs(x-1,y);}int main(){ scanf("%s%s",a+1,b+1); int lena=strlen(a+1),lenb=strlen(b+1); for(int i=1;i<=lena;++i){ for(int j=1;j<=lenb;++j){ dp[i][j]=max(dp[i-1][j],dp[i][j-1]); dp[i][j]=max(dp[i][j],dp[i-1][j-1]+(a[i]==b[j])); //printf("%d ",dp[i][j]); }//puts(""); } dfs(lena,lenb); for(int i=v.size()-1;i>=0;--i) printf("%c",v[i]); puts(""); return 0;}
阅读全文
0 0
- 1006 最长公共子序列Lcs
- 1006 最长公共子序列Lcs
- 1006 最长公共子序列Lcs
- 1006 最长公共子序列Lcs
- 1006 最长公共子序列Lcs
- LCS:最长公共子序列
- LCS---最长公共子序列
- 最长公共子序列 LCS
- LCS -- 最长公共子序列
- LCS最长公共子序列
- 最长公共子序列LCS
- LCS-最长公共子序列
- 最长公共子序列 LCS
- 最长公共子序列(LCS)
- 最长公共子序列(LCS)
- 最长公共子序列LCS
- LCS最长公共子序列
- 最长公共子序列LCS
- (1) spring去掉默认绑定的common-logging.jar
- Chrome Extension实战:页面JS脚本替换
- Java网络编程(二)-基于http协议的网络编程
- php7那点事
- centos7 iptables 命令
- 1006 最长公共子序列Lcs
- 实验五 JPEG原理分析及JPEG解码器的调试
- 邻接矩阵存储简单路径
- 人工智能复习
- 深入理解Java中的抽象类和接口
- mongo 操作缩写
- 使用神经网络对黄金期货交割价格进行预测-1 MATLAB
- 如何在Ubuntu上轻松截图
- 正则表达式