最长公共子序列Lcs---51--Nod
来源:互联网 发布:睡别人女朋友 知乎 编辑:程序博客网 时间:2024/06/05 11:41
给出两个字符串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<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAX=1001;char str1[MAX];char str2[MAX];char str[MAX];int a[MAX][MAX]={0};int main(){ int i,j; while(scanf("%s %s",str1,str2)!=EOF) { int len1=strlen(str1); int len2=strlen(str2); for(i=1;i<=len1;i++) { for(j=1;j<=len2;j++) if(str1[i-1]==str2[j-1]) a[i][j]=a[i-1][j-1]+1; else a[i][j]=max(a[i-1][j],a[i][j-1]); } int num=0; for(int k=len1,m=len2;k>=1&&m>=1;) { if(str1[k-1]==str2[m-1]) { str[num++]=str1[k-1]; k--; m--;} else if(a[k][m-1]>a[k-1][m]) m--; else k--; }for(int k=num-1;k>=0;k--) cout<<str[k];cout<<endl; } return 0;}
阅读全文
0 0
- 最长公共子序列Lcs 51Nod
- 最长公共子序列Lcs---51--Nod
- 【51Nod】1006 - 最长公共子序列Lcs(LCS)
- 51nod 1006 最长公共子序列Lcs【LCS】
- lcs 51nod 1006 最长公共子序列Lcs
- 51nod 1006:最长公共子序列Lcs
- 51Nod 1006 最长公共子序列Lcs(dp)
- 51Nod-1006-最长公共子序列Lcs
- [51nod]1006 最长公共子序列Lcs
- 51Nod 1006 最长公共子序列LCS DP水题
- 51nod 最长公共子序列测试 【LCS+回溯】
- 51Nod 1006 - 最长公共子序列(Lcs)
- 51nod 1006 最长公共子序列Lcs
- 51nod 1006 最长公共子序列Lcs
- 51Nod 1006 最长公共子序列Lcs
- 【51nod】1006 最长公共子序列Lcs
- 51Nod---1006-最长公共子序列Lcs
- 最长公共子序列(Lcs)51NOD-1006
- CF--518A--Strange Addition
- 25:螺旋加密(1.8编程基础之多维数组)
- UIMenuController功能扩展
- 2017.9.18
- java native调用
- 最长公共子序列Lcs---51--Nod
- hdu6214—Smallest Minimum Cut(最小割的最少割边)
- Leetcode 169 & 229
- 解决Winform程序在不同分辨率系统下界面混乱
- E:奇怪的奖励规则
- Spark Streaming中的操作函数分析
- 机器学习_支持向量机
- JavaScripts 数组
- 欢迎使用CSDN-markdown编辑器