51NOD 1183 編輯距離(動態規劃基礎)

2021-07-15 08:56:54 字數 1141 閱讀 9432

1183 編輯距離

基準時間限制:1 秒 空間限制:131072 kb 分值: 0 

難度:基礎題

編輯距離,又稱levenshtein距離(也叫做edit distance),是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。

例如將kitten一字轉成sitting:

sitten (k->s)

sittin (e->i)

sitting (->g)

所以kitten和sitting的編輯距離是3。俄羅斯科學家vladimir levenshtein在2023年提出這個概念。

給出兩個字串a,b,求a和b的編輯距離。

input

第1行:字串a(a的長度 <= 1000)。

第2行:字串b(b的長度 <= 1000)。

output

輸出a和b的編輯距離
input示例

kitten

sitting

output示例

3
思路:設dp[i][j]為字串a的前i個字元和字串b的前j個字元的編輯距離。那麼我們來看看dp[i][j]可以由哪些狀態轉移而來。

如果a[i-1]=b[i-1],那麼顯然dp[i][j]=dp[i-1][j-1]

如果不等呢?那麼它可以由dp[i-1][j-1],dp[i-1][j],dp[i][j-1]轉移而來,分別是替換,新增,刪除操作。這樣就能得到遞推式了。

**:

#include #include #include #include #include #include #include #include #include #define maxn 1010

using namespace std;

char a[maxn],b[maxn];

int dp[maxn][maxn];//dp[i][j]a的前i個字元和b的前j個字元的編輯距離

int main()

else

}printf("%d\n",dp[la][lb]);

return 0;

}

51nod 1183 編輯距離

基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitte...

51 nod 1183 編輯距離

1183 編輯距離 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字...

51nod 1183 編輯距離

思路 之前做個這道題,當時就感覺此題很像最長公共子串行,今天重新做51nod裡想了一次,思路是相同的,一開始初始陣列,最長公共子串行是0到n有多少個相同 這個是0到n需要轉化多少步 那自然也就是n步了 按著這個思路 a b 的a陣列前i個與b陣列前j個需要幾步轉化,相同思路,模擬 include i...