最长公共子串(10分)
个序列中去掉若干(也可以不去掉)元素剩下的部分称为其子序列。对于给定的序列X= ,称序列Z= <21,
z2+ … 2>为X的一个子序列,仅当在X中存在一个递增序号序列< i. i2, … ik>,对所有的(1, 2, …
k)满足的j二勾j。例如,Z=是X=的一个子序列,X中相应的序号序列为<1, 2,
4, 6>。要求输入两个字符串,求它们的最长公共子序列(最长公共子串)及其长度。
输入格式:
首先输入一一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据在第- -行中输入主串s.在第二行中输入子审t,
s和t中不包含空格。输出格式:对于每组测试,输出两行,第一-行是最长公共子串的长度,第二行是最长公共子串(以第一个串中字符的出现次序优先, 参看输出样例) .
输入样例: 4 abcfbc abfcab abfcab abcfbc
输出样例: 4 abcb 4 abfc
#includeusing namespace std; int main(){ int T; cin>>T; string s; string t; int ans[999]={0}; int cnt=0; for(int cs=0;cs >s; cin>>t; int lens=s.length(); int lent=t.length(); for(int i=0;i 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)