zoukankan      html  css  js  c++  java
  • 动态规划-编辑距离

    设A和 B是两个 是两个 英文 字符串 (仅包括英文字母,严格区分大小写 )。为 了将 A变换为 B,可以采用如下三种字符操作: ,可以采用如下三种字符操作: ,可以采用如下三种字符操作: ①删除一个字符; ②插入一个字 符; ③将一个字符 改为另外。A变换为字符串 变换为字符串 B所需的最小字 符操作数 (限以上三种操作 )称为 A到 B的编辑距离,记为 的编辑距离,记为 的编辑距离,记为 d(A,B) 。计算两个字符串的辑距离 编写程序,计算两个字符串的辑距离 d(A, d(A, B) 。

    package test;
    
    import java.util.Scanner;
    
    public class test1 {
        public static int editDistance(String a, String b) {
            if (a == null || b == null) {
                return 0;
            }
            int[][] matrix = new int[a.length() + 1][b.length() + 1];
            for (int i = 0; i < a.length() + 1; i++) {
                for (int j = 0; j < b.length() + 1; j++) {
                    if (i == 0) {
                        matrix[i][j] = j;
                    } else if (j == 0) {
                        matrix[i][j] = i;
                    } else {
                        if (a.charAt(i - 1) == b.charAt(j - 1)) {
                            matrix[i][j] = matrix[i - 1][j - 1];
                        } else {
                            matrix[i][j] = 1 + Math.min(Math.min(matrix[i - 1][j], matrix[i][j - 1]), matrix[i - 1][j - 1]);
                        }
                    }
                }
            }
            return matrix[a.length()][b.length()];
        }
         
        public static void main(String arg[])
        {
            Scanner input=new Scanner(System.in);
            String s1=input.nextLine();
            String s2=input.nextLine();
            int res=editDistance(s1,s2);
            System.out.print("d("+s1+","+s2+")="+res);        
        }
    }
  • 相关阅读:
    Xcode 5.1 更新后插件不能用
    adplus 抓取dump
    压力测试工具 Tinyget
    mssql server提示无权限
    windbg sos加载相关
    oracle中文显示为问号
    菜鸟成长进阶之——fiddler使用总结
    windbg学习进阶之——windbg字段名及其意义
    windbg学习进阶之——dump分析常用命令收集
    windbg学习进阶之——windbg环境变量配置
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8035144.html
Copyright © 2011-2022 走看看