首页 > 代码库 > 最长公共子序列简单实现
最长公共子序列简单实现
int LCS(string str1, string str2) //返回最长公共字串长度{ //创建矩阵 int** martix; martix = new int*[str1.length()+1]; for(int i =0; i<=str1.length(); i++) { martix[i] = new int[str2.length()+1]; } //初始化矩阵 for (int i = 0; i <= str1.length(); i++) martix[i][0] = 0; for (int j = 0; j <= str2.length(); j++) martix[0][j] = 0; //填充矩阵 for (int i = 1; i <= str1.length(); i++) { for (int j = 1; j <= str2.length(); j++) { if (str1[i-1] == str2[j-1]) { martix[i][j] = martix[i-1][j-1] + 1; } else { martix[i][j]=0; } } } //找到最大处即最长处 int max(0),imax(0),jmax(0); for (int i = 0; i <= str1.length(); i++) { for (int j = 0; j <= str2.length(); j++) { if(martix[i][j]>max) { max = martix[i][j]; imax = i; jmax = j; } } } cout<<"最长公共字串长度为:"<<max<<endl; cout<<"最长公共字串为:"; for(int i = max; i>0; i--) { cout<<str1[imax-i]; } cout<<endl; for(int i =0; i<=str1.length(); i++) { delete[] martix[i]; } delete[] martix; return max;}
最长公共子序列简单实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。