POJ 2774 Long Long Message && URAL 1517. Freedom of Choice(求最长重复子序列)(二)
char str1[maxn], str2[maxn]; void Del(int n, int len1, int len2) { int xp = 0; for(int i = 2; i <= n; i++) { if(xp < height[i]) { int fx = sa[i-1]; int fy = sa[i]; int xx = max(fx, fy); int yy = min(fx, fy); if(xx > len1 && yy < len1) xp = height[i]; } } printf(%d , xp); } int main() { ///init(); while(~scanf(%s %s,str1, str2)) { int len1 = strlen(str1); int len2 = strlen(str2); int n = 0; for(int i = 0; i < len1; i++) seq[n++] = str1[i]; seq[n++] = 1; for(int i = 0; i < len2; i++) seq[n++] = str2[i]; seq[n] = 0; da(seq, sa, n+1, 130); calheight(seq, sa, n); Del(n, len1, len2); } return 0; }
?
|