一、问题描述
设A和B是两个字符串,长度分别为n,m要用最少的字符操作(包括字符的插入、删除、修改),这样的操作称为字符串A到B的操作距离,记为d(A,B)。
#include
#include
#include
#define MAXN 1000
using namespace std;
int min_three(int a, int b, int c) {
int temp = min(a, b);
return min(temp, c);
}
int main() {
char str1[MAXN], str2[MAXN];
int num[MAXN][MAXN], i, j, len1, len2;
while(cin>>str1>>str2) {
len1 = strlen(str1);
len2 = strlen(str2);
for(i = 0; i < len1; i++) {
num[i][0] = i;
}
for(j = 0; j < len2; j++) {
num[0][j] = j;
}
for(i = 1; i < len1; i++) {
for(j = 1; j < len2; j++) {
if(str1[i]==str2[j]) {
num[i][j] = num[i-1][j-1] + 1;
} else {
num[i][j] = min_three(num[i][j-1], num[i-1][j-1], num[i][j-1]) + 1;
}
}
}
cout<