51nod 最长公共子序列 (DP+回溯)
来源:互联网 发布:淘宝怎么上一千零一夜 编辑:程序博客网 时间:2024/06/07 18:33
输入
第1行:字符串A第2行:字符串B(A,B的长度 <= 1000)
输出
输出最长的子序列,如果有多个,随意输出1个。
输入示例
abcicbaabdkscab
输出示例
abca
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int maxn=1000+100;char s1[maxn],s2[maxn];int dp[maxn][maxn],vis[maxn][maxn];void print(int i,int j){if(i==0||j==0) return ;if(vis[i][j]==1) {print(i-1,j-1);cout<<s1[i-1];}if(vis[i][j]==2) {print(i-1,j);}if(vis[i][j]==3) {print(i,j-1);}}int main(){int n,m,i,j;memset(vis,0,sizeof(vis));scanf("%s%s",s1,s2);n=strlen(s1);m=strlen(s2);for(i=1;i<=n;i++) {for(j=1;j<=m;j++) {if(s1[i-1]==s2[j-1]) {dp[i][j]=dp[i-1][j-1]+1;vis[i][j]=1;}else if(dp[i-1][j]>=dp[i][j-1]) {dp[i][j]=dp[i-1][j];vis[i][j]=2;}else {dp[i][j]=dp[i][j-1];vis[i][j]=3;}}}print(n,m);//cout<<dp[n][m]<<endl;cout<<endl;return 0;}
0 0
- 51nod 最长公共子序列 (DP+回溯)
- 51Nod 1006 最长公共子序列Lcs(dp)
- 51Nod 1006 最长公共子序列Lcs(DP)
- 51nod 最长公共子序列测试 【LCS+回溯】
- 51Nod 1006 最长公共子序列LCS DP水题
- 最长公共子序列 + 记录路径 ( 51 NOD DP 教程 )
- 51nod 1006 最长公共子序列Lcs(基础dp)
- 51nod 最长公共子序列问题
- 51nod 最长公共子序列问题
- 51nod最长公共子序列
- 51nod-最长公共子序列问题
- 51nod最长公共子序列问题
- 51 nod 最长公共子序列
- 51nod,最长公共子序列问题
- 最长公共子序列Lcs 51Nod
- 51NOD 最长公共子序列问题
- 51NOD-最长公共子序列问题
- 最长公共子序列Lcs---51--Nod
- 对重构的理解
- Linux yum命令以及centOs安装jdk、tomcat、mysql
- oracle手注
- python rmq
- 【QT】QT4.8.6静态编译
- 51nod 最长公共子序列 (DP+回溯)
- 浅谈计算机中的存储模型(二)物理内存
- ARM 关键几个寄存器
- (一)程序设计的基本知识
- Activity 生命周期
- TDD相关测试框架
- iOS7的statusBar和navigationBar
- iOS7自定义statusbar和navigationbar的若干问题
- C++ string大小写转换