HDU1159最長公共子串行

2021-07-15 19:02:59 字數 505 閱讀 3538

這個題貌似是演算法導論的原題

不過本著能迴圈堅決不用遞迴的態度

我認真地寫了迴圈…

關鍵其實就是乙個轉移方程

如果兩個位元組一樣,他就等於

dp[a][b]=dp[a+1][b+1]+1;

如果不一樣就找兩邊最大的

dp[a][b]=max(dp[a][b+1],dp[a+1][b]);

另外在dp題裡有點找到感覺了,如果想要用迴圈就先找到以前遞迴的感覺,然後自底向上加回去

#include

#include

#include

#include

#include

#include

using

namespace

std;

int dp[605][605];

int main()

else}}

cout

<0][0]0;}

hdu 1159 最長公共子串行

2562465 2010 06 29 17 20 23 accepted 1159 31ms 3240k 835 b c t t include include include define max size 10000 using namespace std int dp max size 1 m...

hdu 1159 公共子串行

用二維陣列f i j 記錄字串s1的前i個字元與s2的前j個字元的最大公共子串。當s1 i s2 j 時,f i j f i 1 j 1 1 否則f i j max f i 1 j f i j 1 include include define max a,b a b?a b define n 100...

hdu1159 最長公共子串行經典題 LCS

解題思路 狀態 dp i j 子列c1i和子列c2j的lcs 轉移方程 dp i j dp i 1 j 1 1,c1i c2j max dp i 1 j dp i j 1 c1i c2j 當兩子串行的最後乙個字元相同時,把兩子串行的尾部去掉 因為相同,被記錄 此時的lcs 1 當不相同時,就是找當前...