n題目描述
假設字串的基本操作僅為:刪除乙個字元、插入乙個字元和將乙個字元修改成另乙個字元這三種操作。
我們把進行了一次上述三種操作的任意一種操作稱為進行了一步字元基本操作。
下面我們定義兩個字串的編輯距離:對於兩個字串a和b,通過上述的基本操作,我們可以把a變成b或b變成a,那麼字串a變成字串b需要的最少基本字元操作步數稱為字串a和字串b的編輯距離。
例如:a=「abc」,b=「cbcd」,則a與b的編輯距離為2。
你的任務就是:編寫乙個快速的程式來計算任意兩個字串的編輯距離。
n輸入輸入包含兩行:第一行為字串a,第二行為字串b。
字串的長度不大於10000,且全為字母。
n輸出輸出只有一行,為編輯距離。
n樣例輸入
abc
cbcd0a1
b2c3c11
22b22
12c33 21
d4432
n樣例輸出
n乍一看彷彿是搜尋,但仔細一想,這道題用搜尋是不可能實現的(至少我是這麼認為的)。那麼我們就要採取新的策略:動態規劃。
n我們知道,所有的動規問題都是可以分段解決的,那麼這道題也是如此。我們可以把長的字串拆解為短的字串,一直拆解到只剩下乙個字元為止。
編輯距離問題
問題描述 設a和b是2個字串。要用最少的字元操作將字元a轉化為字元b。字元操作包括 1 刪除乙個人字元。2 插入乙個字元。3 將乙個字元改為另乙個字元。將字串a變換為字串b所用的最少字元運算元稱為字串a到b 的編輯距離,記為d a,b 設計乙個演算法,對給定的任意兩個字串a和b計算出他們的編輯距離d...
編輯距離問題
編輯距離問題 給定兩個字串s和t,對於t我們允許三種操作 1 在任意位置新增任意字元 2 刪除存在的任意字元 3 修改任意字元 問最少操作多少次可以把字串t變成s?例如 s abcf t dbfg 那麼我們可以 1 把d改為a 2 刪掉g 3 加入c 所以答案是3。輸入 第1行 字串a a的長度 1...
編輯距離問題
給定兩個字串s和t,對於t我們允許三種操作 1 在任意位置新增任意字元 2 刪除存在的任意字元 3 修改任意字元 問最少操作多少次可以把字串t變成s?例如 s abcf t dbfg 那麼我們可以 1 把d改為a 2 刪掉g 3 加入c 所以答案是3。輸入 第1行 字串a a的長度 1000 第2行...