編輯距離,又稱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)。output第2行:字串b(b的長度 <= 1000)。
輸出a和b的編輯距離input示例
kittenoutput示例sitting
3動態規劃題目,設dp[i][j]為a前i個字元和b前j個字元的編輯距離,
那麼當a[i] == b[j](字串從0開始)時,dp[i+1][j+1] = min(dp[i][j],min(dp[i][j+1]+1,dp[i+1][j]+1));
當不等於時,dp[i+1][j+1] = min(dp[i][j]+1,min(dp[i+1][j]+1,dp[i][j+1]+1));
要注意的是dp[0][j] 和 dp[i][0]這兩種情況。
1 #include 2 #include 3 #include4using
namespace
std;
5char str1[1010], str2[1010];6
int dp[1010][1010];7
intmain()16}
17 printf("
%d\n
",dp[len1][len2]);
18return0;
19 }
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...