以fast和cats为例
算法为:
实现代码:(以cats和fast为例)
public class dynamic {
public static int mini(int a,int b,int c){
if(a<=b && a<=c)
return a;
if(b<=a && b<=c)
return b;
if(c<=a && c<=b)
return c;
return 0;
}//求最小数的函数
public static void main(String args[]){
char []cats={' ','c','a','t','s'};
char []fast={' ','f','a','s','t'};
int [][]dct=new int [5][5];//距离的二维数组
int i,j;
for(i=0;i<5;i++)
{
dct[0][i]=i;
dct[i][0]=i;
}
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
{
if(cats[i]!=fast[j])//如果两个字符不相同
dct[i][j]=mini(dct[i-1][j-1]+1,dct[i-1][j]+1,dct[i][j-1]+1);//求三个数最小的一个放入数组中
else if(cats[i]==fast[j])
dct[i][j]=mini(dct[i-1][j-1],dct[i-1][j]+1,dct[i][j-1]+1);
}
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
System.out.print(dct[i][j]+" ");
System.out.println();}//输出数组
System.out.println(dct[4][4]);//输出距离
}
}