题目描述
设 \(A\) 和 \(B\) 是两个字符串。我们要用最少的字符操作次数,将字符串 \(A\) 转换为字符串 \(B\)。这里所说的字符操作共有三种:
- 删除一个字符;
- 插入一个字符;
- 将一个字符改为另一个字符。
\(A, B\) 均只包含小写字母。
输入格式
第一行为字符串 \(A\);第二行为字符串 \(B\);字符串 \(A, B\) 的长度均小于 \(2000\)。
输出格式
只有一个正整数,为最少字符操作次数。
样例 #1
样例输入 #1
sfdqxbw
gfdgw
样例输出 #1
4
ACcode:
#include<bits/stdc++.h>
using namespace std;
int f[2500][2500];
char a[2500],b[2500];
int main(){
cin>>a>>b;
int s = strlen(a);
int t = strlen(b);
for(int i = 1;i<=s;i++)f[i][0] = i;
for(int i = 1;i<=t;i++)f[0][i] = i;
for(int i=1;i<=s;i++){
for(int j = 1;j<=t;j++){
if(a[i-1] == b[j-1]){
f[i][j] = f[i-1][j-1];
continue;
}
f[i][j] = min(min(f[i-1][j],f[i][j-1]),f[i-1][j-1])+1;
}
}
cout<<f[s][t];
return 0;
}
标签:字符,int,样例,距离,编辑,字符串,strlen,2500
From: https://www.cnblogs.com/nasia/p/17659892.html