动态规划-编辑距离
递推公式:levenST[ i ][ j ] = minOfTreeNum( levenST[ i-1 ][ j ] + 1, levenST[ i ][ j-1 ] + 1, levenST [i-1 ][ j-1 ] + eq );
code:
import java.util.Scanner;
public class Main8 {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
String str1 = s.nextLine();
String str2 = s.nextLine();
int len1 = str1.length();
int len2 = str2.length();
//这样设置表示我使用str1与str2比较
int ar[][] = new int[len1+1][len2+1];
//初始化最简单的情况:0->i或0->j
for(int i=0;i<len1+1;i++) {
ar[i][0] = i;
}
for(int i=0;i<len2+1;i++) {
ar[0][i] = i;
}
//开始逐个字符比较:从1开始
for(int i=1;i<len1+1;i++) {
for(int j=1;j<len2+1;j++) {
int temp = ar[i-1][j-1];
if(str1.charAt(i-1) != str2.charAt(j-1)) {
temp+=1;
}
ar[i][j] = Math.min(ar[i-1][j]+1, Math.min(ar[i][j-1]+1, temp));
}
}
for(int i=0;i<len1+1;i++) {
for(int j=0;j<len2+1;j++) {
System.out.print(ar[i][j]+" ");
}
System.out.println("");
}
s.close();
}
}
博客参考:https://www.cnblogs.com/www-helloworld-com/p/10202923.html

浙公网安备 33010602011771号