LCS(Longest Common Substring)算法
来源:互联网 发布:node如何指定版本安装 编辑:程序博客网 时间:2024/06/03 18:39
在听数据结构的时候讲到了LCS的一个有意思的算法,mark一下:
#include<iostream>#include<string>#include<vector>using namespace std;int lcs(const string, const string);int max(int, int);int main() { //test cout << lcs("qqqqaqaqqqaq", "zzzazazazz") << endl; system("pause");}int lcs(const string a, const string b) { vector<vector<int>> temp(a.size()); for (int i = 0; i < a.size(); i++) temp[i].resize(b.size()); for (int i = 0; i < a.size(); i++) { if (a[i] == b[0] || i != 0 && temp[i - 1][0] == 1) temp[i][0] = 1; else temp[i][0] = 0; } for (int j = 0; j < b.size(); j++) { if (b[j] == a[0] || j != 0 && temp[0][j - 1] == 1) temp[0][j] = 1; else temp[0][j] = 0; } for (int i = 1; i < a.size(); i++) { for (int j = 1; j < b.size(); j++) { if (a[i] == b[j]) temp[i][j] = 1 + temp[i - 1][j - 1]; else temp[i][j] = max(temp[i][j - 1], temp[i - 1][j]); } } for (int i = 0; i < a.size(); i++) { for (int j = 0; j < b.size(); j++) { cout << temp[i][j]; if (j != b.size()) cout << " "; } cout << endl; } return temp[a.size() - 1][b.size() - 1];}int max(int a, int b) { return a > b ? a : b; }
它将字符串问题利用二维数组求路径的方法给出了解,而且复杂度仅为O(n),蛮好蛮好
0 0
- LCS(Longest Common Substring)算法
- [SPOJ1811]LCS - Longest Common Substring
- SPOJ LCS Longest Common Substring
- SPOJ 1811LCS Longest Common Substring
- SPOJ LCS Longest Common Substring 后缀自动机
- [SPOJ LCS]Longest Common Substring && 后缀自动机
- 【后缀自动机】[SPOJ LCS]Longest Common Substring
- 后缀数组 spoj LCS - Longest Common Substring
- LCS(Longest Common Subsequence)算法
- LCS(longest common subsequence)与LCS(longest common substring)以及后缀数组
- 最长公共子串(Longest-Common-Substring,LCS)
- spoj1811 Longest Common Substring(LCS),后缀自动机
- 最长公共子串(Longest-Common-Substring,LCS)
- spoj 1811 LCS - Longest Common Substring (后缀自动机)
- 最长公共子串(Longest Common Substring, LCS)
- 最长公共子串 Longest-Common-Substring(LCS)
- [SPOJ1811]LCS - Longest Common Substring(后缀自动机)
- 【后缀自动机】SPOJ(LCS)[Longest Common Substring]题解
- gbk和utf8的区别
- CMD does not support UNC paths as current directories.的巧妙解决方案
- web基础概况
- 整理好的省市区json数据
- 那些C++牛人的博客
- LCS(Longest Common Substring)算法
- html学习笔记
- pat-a 1005. Spell It Right (20)
- Android中Cursor类的概念和用法s
- 实现文本预览文件对话框
- Java后端WebSocket的Tomcat实现
- 知乎和简书的夜间模式实现套路
- 手写struts2框架
- CSS修改