Description
设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:
1. 删除一个字符;
2. 插入一个字符;
3. 将一个字符改为另一个字符。
对任给的两个字符串A和B,计算出将字符串A变换为字符串B所用的最少字符操作次数。
Input
第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于200。
Output
只有一个正整数,为最少字符操作次数。
Sample Input
sfdxbqw gfdgw
Sample Output
4
Source
#include<stdio.h>
#include<math.h>
#include<string.h>
int c[1026][1026]={0};
int min(int a,int b,int c)
{
int i=a;
if(i>b) i=b;
if(i>c) i=c;
return i;
}
int main()
{
char a[1025],b[1025];
int i,j,k=1,i1,j1,temp;
for(i=1;i<=1000;i++)
{
c[0][i]=k;c[i][0]=k++;
}
scanf("%s %s",a,b);
i1=strlen(a);
j1=strlen(b);
for(i=1;i<=i1;i++)
for(j=1;j<=j1;j++)
{
temp=(a[i-1]==b[j-1]?0:1);
c[i][j]=min(c[i-1][j-1]+temp,c[i-1][j]+1,c[i][j-1]+1);
}
printf("%d\n",c[i1][j1]);
return 0;
}