最大公共字串LCS问题(阿里巴巴)
2015-08-11 21:29
369 查看
给定两个串,均由最小字母组成。求这两个串的最大公共字串LCS(Longest Common Substring)。
使用动态规划解决。
使用动态规划解决。
#include <iostream> #include <vector> #include <cstring> #include <algorithm> using namespace std; #define MAX 100 int LCS(string left, string right){ int imax = -1; int m = left.size(); int n = right.size(); int i,j; int x,y; vector<vector<int> > temp(m, vector<int>(n,0)); for(i=0; i<m; i++){ for(j=0; j<n; j++){ if(left[i] == right[j]){ if (i == 0 || j == 0){ temp[i][j] = 1; }else{ temp[i][j] = temp[i-1][j-1] + 1; } if(temp[i][j] > imax){ imax = temp[i][j]; x = i; y = j; } } } } /* output the common substring */ i = x, j = y; int k = imax; string s(min(m,n),0); s[k--] = '\0'; while(i>=0 && j>=0){ if(left[i] == right[j]){ s[k--] = left[i]; i--; j--; }else{ break; } } cout<<s<<endl; return imax; } int main(){ int result = 0; string query, text; cin>>query>>text; cout<<query<<endl; cout<<text<<endl; result = LCS(query, text); cout<<result; return 0; }
相关文章推荐
- java实现邮箱发送功能
- 用RAID0 安装Ubuntu Server
- java复习-类和对象(二)
- 欢迎使用CSDN-markdown编辑器
- NOIP2013 货车运输(最大生成树+LCA)
- 链表插入排序
- HDU1272 小希的迷宫
- SQL遍历文件夹 / 文件,返回文件夹列表信息
- Scala 深入浅出实战经典 第54讲:Scala中复合类型实战详解
- Java读写txt文件中文乱码问题的解决
- C语言第二天
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 还在为工作发愁?学JavaScript吧
- 我所理解的service
- android:installLocation="preferExternal"的意义
- atitit.js的 字符串内容 转义  js处理html
- java设计模式之观察者模式
- 开发环境登录---索引错误
- atitit.js的 字符串内容 转义 js处理html
- 【0】Laravel 5.1 简介