blablablablablablablablablabla 傳送門
狀態表示:
dp[i][j]
表示將字串a中前i
個字元編輯成字串b中前j
個字元所要進行的最少操作
狀態計算,根據操作將集合劃分為3類:
刪除–將字串a中的某個字元刪除,操作次數dp[i-1][j] + 1
插入–在字串a的某個位置插入某個字元,操作次數dp[i][j-1] + 1
替換–將字串a中的某個字元替換為另乙個字元,需要分兩種情況討論:
i.a[i]==b[j],操作次數dp[i-1][j-1]
ii.a[i]!=b[j],操作次數dp[i-1][j-1] + 1
iii.dp[i][j] = min
初始狀態:
f[0][i] = i
,字串a中插入i個字元
f[i][0] = i
,字串a中刪除i個字元 o(m
∗n2)
o(m*n^2)
o(m∗n2
)
#include
using
namespace std;
const
int n =
1010
;int dp[n]
[n];
char a[n]
, b[n]
;int
main()
printf
("%d\n"
, dp[n]
[m])
;return0;
}
lxfysdssgj chenchen題解 最短編輯距離
blablablablablablablablablabla 傳送門 刪除 將字串a中的某個字元刪除,操作次數f i 1 j 1插入 在字串a的某個位置插入某個字元,操作次數f i j 1 1替換 將字串a中的某個字元替換為另乙個字元,需要分兩種情況討論 i.a i b j 操作次數f i 1 j ...
chenchen題解 Trie字串統計
維護乙個字串集合,支援兩種操作 1.i x 向集合中插入乙個字串x q x 詢問乙個字串在集合 現了多少次。共有n個操作,輸入的字串總長度不超過 10 5 字串僅包含小寫英文本母。輸入格式 第一行包含整數n,表示運算元。接下來n行,每行包含乙個操作指令,指令為 i xix 或 q xqx 中的一種。...
chenchen題解 最長不下降子串行
blablablablablablablablablabla 傳送門 dp題狀態表示 dp i 表示到i個字元的最長不下降子串行的長度 狀態轉移 每當當前的子串行為上公升且長度大於maxx時,就更新maxx o n 2 o n 2 o n2 include using namespace std c...