最长连续公共子序列
西安电子科技大学2018年机试题
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
输入两个字符串s1,s2。输出最长连续公共子串长度和最长连续公共子串。
输入输出格式
输入描述:
多组数据输入。 输入两个字符串s1,s2,长度不大于100,以空格隔开。
输出描述:
输出最长连续公共子串长度和最长连续公共子串。
输入输出样例
输入样例#:
abcdefg qwercdefiok
输出样例#:
4 cdef
提示
请注意:如果有多个相同长度的子串符合要求,输出最后一个。
解题方法
思路
dp[i][j]代表以s1[i-1]、s2[j-1]为结尾的最长连续公共子序列串
用maxLen和reStr接收最大长度和子串
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
string s1,s2,reStr;
int maxLen;
while(cin>>s1>>s2){
reStr="";
maxLen = 0;
vector<vector<string>> dp(s1.size()+1,vector<string>(s2.size()+1,""));
for(int i=1;i<=s1.size();i++){
f