原題:首先這是乙個單字串問題。子字串r 在字串l 中至少出現兩次,則稱r 是l 的重複子串。重複子串又分為可重疊重複子串和不可重疊重複子串,這裡只是簡單討論最長可重疊的重複子串,給出基本演算法。
最長重複子串
用最笨的方法,逐個掃瞄,時間複雜度o(n^2), **如下,親測可用:
int lcs::comlen(const char*p, const char *q)
int lcs::longestrepeatsubstring(const char*p)}}
return maxlen;//返回最大的重複個數
}
最長公共子串int lcs::comlen(const
char*p, const
char *q)
int lcs::longestrepeatsubstring(const
char*p, const
char* q)}}
return maxlen;//返回最大的重複個數
}
最長公共子串行
int c[100][100] = ;
int lcs::lcs_length(const
char* x, const
char *y)
}return c[m][n];
}return
0;}
最長公共子串行 最長重複子串
最長公共子串行 longest common subsquence s1 a b d a c e s2 b a b c e lcs abce abce 長度4 1 brute force 遞迴解法 從單個字元解決問題 某位置處若兩字元相等,則同時序號增加,最長長度 1 若不相等,則需要s1增加1個位...
最長公共子串行 最長公共子串
1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...
最長公共子串行 最長公共子串
1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...