思路:
设f[i][j]标识a匹配到i位,b匹配到j位
于是很好转移(
c o d e code code
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[2010], ss[2010];
int f[2010][2010];
int main()
{
scanf("%s", s+1);
scanf("%s", ss+1);
memset(f, 0x7f, sizeof(f));
f[0][0]=0;
for(int i=1; i<=strlen(s+1); i++)
f[i][0]=i;
for(int i=1; i<=strlen(ss+1); i++)
f[0][i]=i;
for(int i=1; i<=strlen(s+1); i++)
for(int j=1; j<=strlen(ss+1); j++)
{
if(s[i]==ss[j])
f[i][j]=f[i-1][j-1];
f[i][j]=min(f[i][j], f[i-1][j]+1);
f[i][j]=min(f[i][j], f[i-1][j-1]+1);
f[i][j]=min(f[i][j], f[i][j-1]+1);
}
printf("%d", f[strlen(s+1)][strlen(ss+1)]);
return 0;
}