最长公共子序列(LCS)的C++实现
来源:互联网 发布:qq抢红包软件 编辑:程序博客网 时间:2024/06/15 05:07
首先有如下递归式
绘制图表如下
首先我们实现最长公共子序列长度的输出,代码如下:
#include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;int table[100][100] = { 0 };int main(){string a, b;cin >> a >> b;int m = a.length();int n = b.length();for (int i = 1; i <= m; i++){for (int j = 1; j <= n; j++){if (a[i-1] == b[j-1]){table[i][j] = table[i - 1][j - 1] + 1;}else{table[i][j] = max(table[i - 1][j], table[i][j - 1]);}}}cout << table[m][n] << endl;system("pause");}只需做一点小改动,假如一个判断数组和一个输出函数,用到递归,代码如下:
#include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;int table[100][100] = { 0 };int judge[100][100] = { 0 };int print_LCS(int judge[][100], string x,int,int);int main(){string a, b;cin >> a >> b;int m = a.length();int n = b.length();for (int i = 1; i <= m; i++){for (int j = 1; j <= n; j++){if (a[i-1] == b[j-1]){table[i][j] = table[i - 1][j - 1] + 1;judge[i][j] = 1;}else if(table[i - 1][j] >= table[i][j - 1]){table[i][j] = table[i - 1][j];judge[i][j] = 2;}else{table[i][j] = table[i][j - 1];judge[i][j] = 3;}}}cout << table[m][n] << endl;print_LCS(judge, a, m, n);cout << endl;system("pause");}int print_LCS(int judge[][100],string a,int x,int y)//x,y,分别为两段长度{if (x == 0 || y == 0){return 0;}if (judge[x][y] == 1){print_LCS(judge, a, x-1, y-1);cout << a[x-1];}if (judge[x][y] == 2){print_LCS(judge, a, x - 1, y);}if (judge[x][y] == 3){print_LCS(judge, a, x, y - 1);}}
阅读全文
1 0
- 最长公共子序列(LCS)的C++实现
- 给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。C实现
- Python 实现最长公共子序列LCS
- 最长公共子序列LCS C++实现
- 求最长公共子序列(lcs.pas/c/cpp)
- 最长公共子序列(LCS) c语言/c++
- LCS算法(动态规划实现最长公共子序列)c语言实现
- 算法学习 - 最长公共子序列(LCS)C++实现
- LCS问题(最长公共子序列)-动态规划实现
- Java-LCS最长公共子序列(动态规划实现)
- LCS最长公共子序列的理解
- 最长公共子序列(LCS)
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 求最长公共子序列(LCS)
- 最长公共子序列算法(LCS)
- LCS(最长公共子序列)
- 最长公共子序列(LCS)问题
- 四招助力练就Devops核心能力!
- super关键字
- 谨慎优化代码
- CentOS之7与6的区别
- 南阳oj第91题(阶乘之和)
- 最长公共子序列(LCS)的C++实现
- android之解析json
- linux-samba服务器配置
- hdu2031 进制转换(C语言)
- Sass开发注意点
- JavaSeript实现摄像头拍照预览
- faster RCNN的Python的画出来loss曲线图
- JFinal数据库连接及访问
- Linux常用命令