2018西安电子科技大学上机:最长连续公共子序列(动态规划)
Posted 一航代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018西安电子科技大学上机:最长连续公共子序列(动态规划)相关的知识,希望对你有一定的参考价值。
输入两个字符串s1,s2。输出最长连续公共子串长度和最长连续公共子串。(改编)
输入格式:
输入两个字符串s1,s2,长度不大于100,以空格隔开。
输出格式:
输出最长连续公共子串长度和最长连续公共子串。
输入样例:
abcdefg qwercdefiok
输出样例:
4
cdef
解决方法:
(1)代码实现:
#include <algorithm>
#include <iostream>
#include <math.h>
#include <string>
#include <vector>
using namespace std;
//公众号:一航代码
int main()
{
string a, b;
cin >> a >> b;
int maxlen = 0, index = 0;
vector<vector<int>> c(a.size() + 1, vector<int>(b.size() + 1, 0));
for (int i = 1; i <= (int)a.size(); i++) {
for (int j = 1; j <= (int)b.size(); j++) {
if (a[i - 1] == b[j - 1]) {
c[i][j] = c[i - 1][j - 1] + 1;
}
if (c[i][j] >= maxlen) {
maxlen = c[i][j];
index = i - maxlen;
}
}
}
cout << maxlen << endl
<< a.substr(index, maxlen) << endl;
system("pause");
return 0;
}
以上是关于2018西安电子科技大学上机:最长连续公共子序列(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章