Luogu P3856公共子串(DP)

2022-05-01 01:21:11 字數 704 閱讀 1960

題目鏈結

dp。設last[i][j]是第i個串字元'j'所在的最後的位置,f[i][j][k]是第乙個串匹配到i,第二個串匹配到j,第三個串匹配到k,最多的公共子串數。

那麼我們三重迴圈i、j、k,每次更新last陣列的值。

然後在三重迴圈內部再加一重迴圈從'a'到'z',列舉公共子串的最後乙個字元是什麼。

然後在last裡面找到這三個字元最後出現在什麼位置,記為nms。

於是f[i][j][k]=f[n-1][m-1][s-1]+1。

最後輸出答案即可。

#include#include

#include

#include

#include

inline

long

long

read()

while

(isdigit(ch))

return num*f;

}long

long f[105][105][105

];char a[1020],b[1020],c[1020

];int

x,y,z;

int last[5][200

];int

main()}}

}printf(

"%lld

",f[x][y][z]);

return0;

}

求公共子串行和公共子串

輸入 第一行給出乙個整數n 0最長公共子串行長度。每組結果佔一行。樣例輸入 2asdf adfsd 123abc abc123abc 樣例輸出36 輸入兩個字串,輸出它們的最長子字串。求公共子串以及求公共子串的長度 include include define n 100 char a n b n ...

找公共子串

in asdff fffasdfffaaaf out 5 尋找公共子串,我的思想就是兩層迴圈,最短每層的乙個i開始最大與長的字串的共同子串,遍歷,暴力搜尋。注意大小寫,和注意思路就好 只有280分,如果有優化 請多多指教 如下,include include include using namesp...

D 子串查詢

度度熊的字串課堂開始了!要以像度度熊一樣的天才為目標,努力奮鬥哦!為了檢驗你是否具備不聽課的資質,度度熊準備了乙個只包含大寫英文本母的字串 a 1,n a1a2 ana 1,n a1a2 an,接下來他會向你提出 qq 個問題 l,r l,r 你需要回答字串 a l,r alal 1 ara l,r...