51Nod 1183 編輯距離(dp)

2021-08-18 17:44:43 字數 945 閱讀 1481

題意:

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

例如將kitten一字轉成sitting:

sitten (k->s)

sittin (e->i)

sitting (->g)

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

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

思路:dp。。。自己在場上不知道怎麼定義狀態,怎麼說就一直認為他們要一位一位的比較,

講一下把

dp[i][j] 表示的是你的a串在第i個位置,b串在第j個位置的時候,我們的最少變化次數,那麼他有三個操作,替換,插入,刪除。

那麼dp[i][j] = min(dp[i][j],min(dp[i-1][j-1] + 1 , min(dp[i-1][j] + 1 , dp[i][j-1] + 1))//分別表示的是刪除,替換前乙個和後乙個

上**:

#include using namespace std;

int dp[1111][1111];//dp[i][j] 表示的是 a串在第i個位置,b串在第j個位置的時候的最小值

char a[1111],b[1111];

int main()

} int len1 = strlen(a+1);

int len2 = strlen(b+1);

for(int i = 0 ; i <= 1110 ; i++)

for(int i = 1 ; i <= len1 ; i++) }

printf("%d\n",dp[len1][len2]);

}

51nod 1183 編輯距離 dp

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

51nod 1183 編輯距離 (dp)

編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitten一字轉成sitting sitten k s sittin e i sit...

51Nod 1183 編輯距離(DP)

題目描述 思路 設 d p i j dp i j dp i j 表示把字串a的前i個字元變成字串b的前j個字元的編輯距離,有轉移方程 d p i 1 j 1 dp i j a i b j 0 1 dp i j 1 1 dp i 1 j 1 end dp i 1 j 1 dp i j a i b j ...