摘要:
height数组:定义 height[i] = suffix[i-1] 和 suffix[i] 的最长公共前缀,也就是排名相邻的两个后缀的最长公共前缀。那么对于 j 和 k 不妨设 Rank[j] =h[i-1]-1. 证明: 设suffix[k]是排在suffix[i-1]前一名的后缀,则它们的最长公共前缀是h[i-1]。那么suffix[k+1]将排在suffix[i]前面(这里要求h[i-1]>1,如果h[i-1]<=1原式显然成立)并且suffix[k+1]和suffix[i]的最长公共前缀是h[i-1]-1,所以suffix(i)和它前一位的最长公共前缀至少是h[i-1] 阅读全文
摘要:
暴力求解题意:求一个公共子串的最大长度,反转的公共子串存在也算。求解思路:先找出最短的字符串进行暴力枚举。每截取一个子串后,求出它的反转字符串,然后检验这两个子字符串是否存在输入的字符串组中,每个字符串只要存在子字符串和的翻转串其中一个就行。#include#include#includeusing namespace std;#define max(a,b) a>b?a:bint n,len,id;string str[110];bool check(string sub){ string tmp; int sl=sub.size(); for(int i=0;i=i;j-... 阅读全文