题意:
找出这些串中最长的公共子串(长度≥3),如果长度相同输出字典序最小的那个。
分析:
用库函数strstr直接查找就好了,用KMP反而是杀鸡用牛刀。
1 #include <cstdio> 2 #include <cstring> 3 4 char a[15][70], sub[70]; 5 int p[70], l; 6 7 int cmp(int p1, int p2) 8 { 9 for(int i = 0; i < l; ++i) 10 if(a[0][p1 + l] > a[0][p2 + l]) return p2; 11 return p1; 12 } 13 14 int main(void) 15 { 16 //freopen("3080in.txt", "r", stdin); 17 int T; 18 scanf("%d", &T); 19 while(T--) 20 { 21 int n, cnt = 0; 22 scanf("%d", &n); 23 for(int i = 0; i < n; ++i) scanf("%s", a[i]); 24 25 for(l = 60; l >= 3; --l) 26 { 27 cnt = 0; 28 for(int pos = 0; pos <= 60 - l; ++pos) 29 { 30 char temp = a[0][pos + l]; 31 a[0][pos + l] = '