动态规划 最长公共子序列
来源:互联网 发布:中国近几年进出口数据 编辑:程序博客网 时间:2024/05/01 14:33
设有字符串a[0...n],b[0...m],下面就是递推公式。字符串a对应的是二维数组num的行,字符串b对应的是二维数组num的列。
//代码实现比较简单,可能有问题 #include <iostream> #include <string> using namespace std; int main(int argc, char **argv) { string str1 = "ABCBDABEFG"; string str2 = "BDCABAEFG"; int x_len = str1.length(); int y_len = str2.length(); int arr[50][50] = {{0,0}}; int i = 0; int j = 0; for(i = 1; i <= x_len; i++) { for(j = 1; j <= y_len; j++) { if(str1[i - 1] == str2[j - 1]) { arr[i][j] = arr[i - 1][j - 1] + 1; } else { if(arr[i][j - 1] >= arr[i - 1][j]) { arr[i][j] = arr[i][j - 1]; } else { arr[i][j] = arr[i -1][j]; } } } } for(i = 0 ; i <= x_len; i++) { for( j = 0; j <= y_len; j++) { cout << arr[i][j] << " "; } cout << endl; } for(i = x_len, j = y_len; i >= 1 && j >= 1;) { if(str1[i - 1] == str2[j - 1]) { cout << str1[i - 1] << " ";//倒序打印的 i--; j--; } else { // if(arr[i][j -1] >= arr[i - 1][j])//打印:B A D B if(arr[i][j -1] > arr[i - 1][j]) //打印:A B C B { j--; } else { i--; } } } cout << endl; return 0; }
0 0
- 最长公共子序列&&最长公共子串---[动态规划]
- 动态规划-最长公共子序列、最长公共子串
- 动态规划之最长公共子序列
- 动态规划 ------- 最长公共子序列
- 动态规划实现最长公共子序列
- 【动态规划】最长公共子序列LCS
- 动态规划--最长公共子序列
- 动态规划:最长公共子序列
- 动态规划解决最长公共子序列
- 最长公共子序列-动态规划DP
- 动态规划--最长公共子序列
- 最长公共子序列(动态规划)
- 动态规划解决最长公共子序列
- 最长公共子序列(动态规划)
- 动态规划 最长公共子序列
- 动态规划 - 最长公共子序列
- 动态规划之最长公共子序列
- 最长公共子序列 [动态规划]
- mysql数据库配置
- 蓝桥杯 算法训练 最短路 spfa
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
- 深度学习如何设置学习率
- myeclipse连接mysql数据库详细步骤
- 动态规划 最长公共子序列
- 第8周OJ项目4 小球自由下落
- Scala:提取器(Extractor)
- mysql rpm之linux安装
- 搬瓦工Shadowsocks配置总结
- vs商业智能项目的安装
- 自己实现文本相似度算法(余弦定理)
- poj3187(杨辉三角+dfs生成可能解)
- string.Format对C#字符串格式化