最长公共子序列模板
来源:互联网 发布:大肚孕照软件下载 编辑:程序博客网 时间:2024/06/05 14:31
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>#include<set>using namespace std;char s1[1000];char s2[1000];int dp[1100][1100];int p[1100][1100];int len1,len2;void solve(){ memset(dp,0,sizeof(dp)); memset(p,0,sizeof(p)); len1=strlen(s1); len2=strlen(s2); for(int i=0; i<=len1; i++) dp[i][0]=0; for(int j=0; j<=len2; j++) dp[0][j]=0; for(int i=1; i<=len1; i++) { for(int j=1; j<=len2; j++) { if(s1[i-1]==s2[j-1]) { dp[i][j]=dp[i-1][j-1]+1; p[i][j]=0; } else if(dp[i][j-1]<dp[i-1][j]) { dp[i][j]=dp[i-1][j]; p[i][j]=1; } else { dp[i][j]=dp[i][j-1]; p[i][j]=-1; } } }}void output(char *s1,int l1,char *s2,int l2,int p[][1100]){ if(l1==0||l2==0) return ; else if(p[l1][l2]==0) { output(s1,l1-1,s2,l2-1,p); cout<<s1[l1-1]; } else if(p[l1][l2]==1) output(s1,l1-1,s2,l2,p); else output(s1,l1,s2,l2-1,p);}int main(){ while(cin>>s1>>s2) { solve(); cout<<dp[len1][len2]<<endl; output(s1,len1,s2,len2,p); } return 0;}
- 最长公共子序列【模板】
- 【模板】最长公共子序列
- 最长公共子序列模板
- 最长公共子序列【模板】
- 【模板】最长公共子序列
- 模板 - 最长公共子序列
- 【模板】最长公共子序列
- 【模板】最长公共子序列
- 最长公共子序列和最长递增子序列模板
- 【模板】最长公共上升子序列
- 【模板】最长递增公共子序列
- 最长公共递增子序列【模板】
- 【模板】最长递增公共子序列
- 最长公共子序列(1)--hdu1159(模板)
- [模板]求最长公共子序列
- 最长公共子序列LCS模板
- 个人模板 最长公共连续子序列
- 个人模板 最长公共子序列
- rrtrtyyhh
- python容器排序sort()和内建函数sorted()的区别
- CODE 11: Best Time to Buy and Sell Stock II
- android Camera捕获数据
- #pragma 预处理指令详解
- 最长公共子序列模板
- 经典SQL语句大全
- Android动态加载jar、apk的实现
- JS怎么刷新当前页面
- [各种面试题] 困难的数
- CODE 10: Best Time to Buy and Sell Stock III
- java中常见面试题String,StringBuffer,StringBulider 的区别及相应的使用方法介绍
- api实现报表拼接
- 习题2-6 调和级数