描述:
用一个字符串表示一段基因,例如:“CTATGGGTTT”。两段基因的相似度定义为它们所包含的最大公共子串的长度。例如:“CCTTGG”和“TGGGC”的最大公共子串为“TGG”,它的长度为3,则我们称“CCTTGG”和“TGGGC”的相似度为3。现给定两段基因,要求计算它们的相似度。
关于输入:
输入第一行包含一个正整数N...........
关于输出:
对于每组测试数据输出一行,该行包含一个整数,表示给定基因段的相似度。
输入:
2
CCCCC TTTTTGGGGGCC
ACTGGG DDD
输出:
2
0
实现代码:
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; int main() { string first; string second; int t,i,j,z,max,ans; cin >> t; while(t--) { ans = 0; max = 0; cin >> first; cin >> second; int len = first.length(); for(i = 0;first[i] != '\0'; i++) { for(z = len - i;z > 0; z--) { for(j = 0;second[j] != '\0'; j++) { if(first.substr(i,z) == second.substr(j,z)) { ans = z; if(ans > max) max = ans; } } } } printf("%d\n",max); } return 0; }