输出两个单词word1和word2,用最少的操作方法将word1转成word2,可使用的操作有插入一个字符、删除一个字符和替换一个字符,用c语言编程输出一个整数n表示操作需要几个步骤的代码
时间: 2023-05-25 17:06:17 浏览: 104
编程实现大整数(128字长)的加、减运算。使得可以实现两个操作数的键盘输入和最终结果的输出。
```c
#include <stdio.h>
#include <string.h>
int min(int a, int b, int c) {
if (a < b && a < c) return a;
if (b < a && b < c) return b;
return c;
}
int editDistance(char* word1, char* word2) {
int len1 = strlen(word1);
int len2 = strlen(word2);
int dp[len1+1][len2+1];
memset(dp, 0, sizeof(dp)); // 应该初始化为0
for (int i = 0; i <= len1; i++) {
for (int j = 0; j <= len2; j++) {
if (i == 0) { // word1为空字符串
dp[i][j] = j;
} else if (j == 0) { // word2为空字符串
dp[i][j] = i;
} else if (word1[i-1] == word2[j-1]) { // 最后一个字符相同
dp[i][j] = dp[i-1][j-1]; // 直接跳过
} else {
dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]);
}
}
}
return dp[len1][len2];
}
int main() {
char* word1 = "word";
char* word2 = "world";
int n = editDistance(word1, word2);
printf("%d", n);
return 0;
}
```
阅读全文