仔细读一读好好琢磨一下就会发现这题发现跟一本通1276是一摸一样,只是多了一个多组输出
原理是跟一本通1276一毛子一样
这里提供一本通1276的题解👉一本通 1276:【例9.20】编辑距离_小王子009的博客-优快云博客
直接上代码:
//计算字符串距离
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1005;
int t, dp[N][N];
char a[N], b[N];
int main() {
cin >> t;
while (t --) {
cin >> a + 1 >> b + 1;
int n = strlen(a + 1), m = strlen(b + 1);
for (int i = 0; i <= n; i ++)
dp[i][0] = i;
for (int i = 0; i <= m; i ++)
dp[0][i] = i;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
if (a[i] == b[j])
dp[i][j] = dp[i - 1][j - 1];
else
dp[i][j] = min(dp[i][j - 1] + 1, min(dp[i - 1][j - 1] + 1, dp[i - 1][j] + 1));
}
}
cout << dp[n][m] << '\n';
}
return 0;
}
/*
【输入样例】
3
abcdefg abcdef
ab ab
mnklj jlknm
【输出样例】
1
0
4
*/
原题链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
代码可以拿走,请把赞留下吧