动态规划——编辑距离

递推公式: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

 (博主详细讲解了递推公式的推理过程)

posted @ 2020-03-24 17:09  怪兽不纯粹  阅读(72)  评论(0)    收藏  举报