設a和b是兩個字串。我們要用最少的字元操作次數,將字串a轉換為字串b。這裡所說的字元操作共有三種:
1、刪除乙個字元;
2、插入乙個字元;
3、將乙個字元改為另乙個字元。
對任的兩個字串a和b,計算出將字串a變換為字串b所用的最少字元操作次數。
第一行為字串a;第二行為字串b;字串a和b的長度均小於200。
乙個正整數,為最少字元操作次數。
sfdqxbw
gfdgw
4分析:字串a通過增刪改三種方式變為b,用dp[i][j]表示a的前i個字元變成b的前j個字元需要的次數。很顯然的揹包問題,如果a的第i個字元和b的第j個字元相等的話,不做修改dp[i][j] = dp[i-1][j-1],反之,
dp[i][j] = min( min(dp[i-1][j]+1,dp[i][j-1]+1),dp[i-1][j-1]+1)。
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
const int maxn = 200+10;
char a[maxn];
char b[maxn];
int dp[maxn][maxn];
int main()
}printf("%d\n",dp[lena][lenb]);
}return 0;
}
編輯距離及編輯距離演算法
編輯距離概念描述 編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitten一字轉成sitting sitten k s sittin e i sitting g 俄...
編輯距離及編輯距離演算法
include include include using namespace std const int max 1001 int maxlen max max int maxlen string str1,string str2 return maxlen len1 len2 int main ...
編輯距離及編輯距離演算法
include include include using namespace std const int max 1001 int maxlen max max int maxlen string str1,string str2 return maxlen len1 len2 int main ...