经典的lcs问题(输出公共子序列)
来源:互联网 发布:mac苹果应用商店下载 编辑:程序博客网 时间:2024/06/07 18:01
这个问题疑惑了很久,只知道求公共子序列长度,不会求子序列。
代码贴出如下:
#include<iostream>using namespace std;#include<algorithm>#include<stack>int chang[1000][1000]={};int flag[1000][1000]={};char * lcs(char *a,char *b){int len1=strlen(a);int len2=strlen(b);//for(int i=0;i<=len1;++i)//chang[i][0]=0;//for(int i=0;i<=len2;++i)//chang[0][i]=0;for(int i=1;i<=len1;++i)for(int j=1;j<=len2;++j){if(a[i-1]==b[j-1]){chang[i][j]=chang[i-1][j-1]+1;flag[i][j]=0;}else if(chang[i][j-1]>=chang[i-1][j]){chang[i][j]=chang[i][j-1];flag[i][j]=-1;}else{chang[i][j]=chang[i-1][j];flag[i][j]=1;}}int len3=chang[len1][len2];char *p=new char[len3+1];p[len3--]='\0';//stack<char> zifu;int i=len1;int j=len2;while(j>0&&i>0){if(flag[i][j]==0){//zifu.push(b[j-1]);p[len3--]=b[j-1];i--,j--;}else if(flag[i][j]==-1){j--;}else if(flag[i][j]==1)i--;}//int len3=zifu.size();//for(int i=0;i<len3;++i)//{//p[i]=zifu.top();//zifu.pop();//}return p;}int main(){char a[]="cafe";char b[]="coffee";char *p=lcs(a,b);cout<<p<<endl;return 0;}
0 0
- 经典的lcs问题(输出公共子序列)
- 动态规划经典问题---最长公共子序列(LCS)
- LCS 最长公共子序列(DP经典问题)
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS问题)
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列问题(LCS)
- 最长公共子序列问题(LCS)
- 最长公共子序列(LCS)问题
- 解决Firefox 的Adobe Flash更新问题。
- SSH+EasyUI批量删除
- Redis学习笔记一、开篇
- Eclipse Mars.1 整合 maven
- PHP网络数据抓取方法
- 经典的lcs问题(输出公共子序列)
- Homestead 使用总结
- 触发器实例
- Android学习文档之数据适配器+DDMS介绍
- Redis学习笔记二、String数据类型
- java 中 Cannot make a static reference to the non-static 解决方法
- Struts2 和 Struts1.x 的全面比较
- unity3d抛物线的脚本
- hdu 1754 i hate it