最长公共子序列(LCS)问题
来源:互联网 发布:泰勒mac口红 编辑:程序博客网 时间:2024/06/06 11:40
#include <iostream>#include <string>using namespace std;int getLCS( string s1, string s2 ){ int result = 0; if( 0 == s1.length() || 0 == s2.length() ) { return result; } int len1 = s1.length(); int len2 = s2.length(); string ss1 = s1.substr( 0, len1 - 1 ); string ss2 = s2.substr( 0, len2 - 1 ); if( s1[ len1 - 1 ] == s2[ len2 - 1 ] ) { result = getLCS( ss1, ss2 ) + 1; } else { int m = getLCS( s1, ss2 ); int n = getLCS( ss1, s2 ); result = m > n ? m : n; } return result;}int c[100][100];int getLCS1( string s1, string s2 ){ int result = 0; if( 0 == s1.length() || 0 == s2.length() ) { return result; } int len1 = s1.length(); int len2 = s2.length(); for( int i = 0; i < len1; ++i ) { c[i][0] = 0; } for( int i = 0; i < len2; ++i ) { c[0][i] = 0; } //c[0][0] = 0; for( int i = 0; i <= len1; ++i ) { for( int j = 0; j <= len2; ++j ) { if( s1[i] == s2[j] ) { if( 0 == i || 0 == j ) { c[i][j] = 1; } else { c[i][j] = c[ i - 1 ][ j - 1 ] + 1; } } else { if( 0 == i || 0 == j ) { if( 0 == i && 0 == j ) { c[i][j] = 0; } else if( 0 == i ) { //c[i][j] = max( c[i][ j - 1 ], c[0][0] ); c[i][j] = c[i][ j - 1 ]; } else { //c[i][j] = max( c[ i - 1 ][j], c[0][0] ); c[i][j] = c[ i - 1 ][j]; } } else { c[i][j] = max( c[i][ j - 1 ], c[ i - 1 ][j] ); } } } } return c[ len1 - 1 ][ len2 - 1 ];}int main(){ int ret = 0; cout << getLCS( "ABCBDAB", "BDCABA" ) << endl; cout << getLCS1( "ABCBDAB", "BDCABA" ) << endl; return ret;}
0 0
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS问题)
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列问题(LCS)
- 最长公共子序列问题(LCS)
- 最长公共子序列(LCS)问题
- 最长公共子序列(LCS)问题
- 最长公共子序列问题(LCS)
- 最长公共子序列问题LCS
- Struts2的配置
- 常用免费的WebService列表
- JavaScript跨域总结与解决办法
- 学习记录-Qt编写自定义控件
- 游泳池 纪中 1439 数学+二分
- 最长公共子序列(LCS)问题
- Unity3d 着色器语法(Shader)
- Android工具类之手机组件调用工具类
- Gem5的基础知识(1)
- 查找activity是否存在内存泄漏--简单粗暴
- intelliJ idea 中添加gradle java项目
- 从零开始打造一个Android 3D立体旋转容器
- MFC学习笔记——CDialog(添加控件)
- QHash存储二级model数据 以及遍历