最長公共子串行!!!!!HDOJ 1159

2021-06-06 17:52:22 字數 715 閱讀 3940

鬱悶啊,今天做中南的比賽突然發現這樣的題,居然忘記怎麼做了

在此做下解題報告記錄下,以此為鑑

sample input

abcfbcabfcab

programming contest

abcd mnp

sample output 42

0題目意思就不解釋了

演算法當然是dp啊

狀態轉移方程式:

f(i,j)=f(i-1,j-1)(a[i]==b[j])

f(i,j)=max(f(i-1,j),f(i,j-1))(a[i]!=b[j])

講解的地方就直接複製貼上了= =

**如下:

#include #include #include #include int f[1005][1005];

int max(int a,int b)

int main()

{ char a[1005],b[1005];

int i,j,k,lenx,leny;

while(scanf("%s%s",a,b)!=eof)

{lenx=strlen(a);

leny=strlen(b);

for(i=0;i

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...

HDU1159最長公共子串行

這個題貌似是演算法導論的原題 不過本著能迴圈堅決不用遞迴的態度 我認真地寫了迴圈 關鍵其實就是乙個轉移方程 如果兩個位元組一樣,他就等於 dp a b dp a 1 b 1 1 如果不一樣就找兩邊最大的 dp a b max dp a b 1 dp a 1 b 另外在dp題裡有點找到感覺了,如果想要...

HDU 1159 DP之最長公共子串行

類似於字典序比較的最長公共子串行,只要找到狀態方程就比較好搞,從角標1開始計算不會出錯,從0還是報錯了 切防止對比溢位要在本來的基礎上 1計算 言歸正傳 dp型別都是狀態方程很重要 假設兩個作對比,分別是s1,s2,則一定有 則dp i j 就為s1前 i 個和s2前 j 個的公共子串行 動態方程就...