51nod 1183 編輯距離

2021-07-23 09:25:39 字數 1113 閱讀 4356

51nod 1183 編輯距離

根據lcs的思路,做兩字串的比較。

f(i,j)表示a字串在1–i,於b字串在1–j時的最小改變量。

遞推式:

f(i,j) = min(f(i – 1, j – 1) + same(i,j), f(i – 1,j ) + 1, f(i, j – 1) + 1)

初始值:

f(0, j) = j

f(i, 0) = i

#include 

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

#define inf 0x3f3f3f3f

#define pi acos(-1.0)

#define e 2.71828

#define mod 1000000007

#define n 1010

char a[n],b[n];

int dp[n][n];

int main()}}

printf("%d\n",dp[lena-1][lenb-1]);

return

0;}

輸出dp圖:

由於只需要最後一行的值,那麼就像01揹包一樣可以優化空間。

char a[n],b[n];

int dp[n];

int main()

//puts("");

intnext;

for(int i = 1; i < lena; i++)

else

//printf("%3d",dp[j]);

}//puts("");

}printf("%d\n",dp[lenb-1]);

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...