給定 n 個長度不超過 10 的字串以及 m 次詢問,每次詢問給出乙個字串和乙個操作次數上限。
對於每次詢問,請你求出給定的 n 個字串中有多少個字串可以在上限操作次數內經過操作變成詢問給出的字串。
每個對字串進行的單個字元的插入、刪除或替換算作一次操作。
輸入格式
第一行包含兩個整數 n 和 m。
接下來 n 行,每行包含乙個字串,表示給定的字串。
再接下來 m 行,每行包含乙個字串和乙個整數,表示一次詢問。
字串中只包含小寫字母,且長度均不超過 10。
輸出格式
輸出共 m 行,每行輸出乙個整數作為結果,表示一次詢問中滿足條件的字串個數。
資料範圍
1≤n, m≤1000
輸入樣例:
3 2
abcacd
bcdab 1
acbd 2
輸出樣例:1
3
採用動態規劃法,兩層迴圈遍歷。f[n][n]表示當前字串狀態。
偽**:
if a[i] = a[j] // 字元相等,f狀態只需要取左上角的狀態(已經為最小次數)即可
f[i][j] = f[i - 1][j - 1];
else // 當前字元不相等,f要取左邊、左上、上邊三個狀態的最小值,然後再+1(表示在前一狀態基礎上進行了一次變換)
最短編輯距離 python 最短編輯距離演算法實現
一,演算法介紹 在cs124課程的第一周提到 求解兩個字串相似度的演算法 minimum edit distance 最短編輯距離 演算法。該演算法在nlp 自然語言處理 中也會用到。如何定義相似度呢?任給兩個字串x 和y,使用以下三種操作將 字串x 變到 字串y 插入 insert 操作 刪除操作...
最短編輯距離
給定兩個字串a和b,現在要將a經過若干操作變為b,可進行的操作有 刪除 將字串a中的某個字元刪除。插入 在字串a的某個位置插入某個字元。替換 將字串a中的某個字元替換為另乙個字元。現在請你求出,將a變為b至少需要進行多少次操作。輸入格式 第一行包含整數n,表示字串a的長度。第二行包含乙個長度為n的字...
最短編輯距離
題目鏈結 給定兩個字串a和b,現在要將a經過若干操作變為b,可進行的操作有 刪除 將字串a中的某個字元刪除。插入 在字串a的某個位置插入某個字元。替換 將字串a中的某個字元替換為另乙個字元。現在請你求出,將a變為b至少需要進行多少次操作。輸入格式 第一行包含整數n,表示字串a的長度。第二行包含乙個長...