最大公共子串問題
這個是動態規劃的基礎題目。動態規劃就是遞推和重複子結構。
確定了遞推關係後。找到一個能極大地減少重複運算的子結構至關重要。選的好了,時間效率會很好。
這個問題,不妨設第一個串爲a,長度爲n,第二個串爲b,長度m。那麼最長的子序列長度爲f(n,m)
當a[n]=a[m]時
f(n,m)=1+f(n-1,m-1)
否則f(n,m)=max(f(n-1),f(m-1))
同時建立一個存儲計算過的f(x,y)的矩陣,如果計算過了就直接使用
程序如下所示
【博客整理】