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

        编辑距离是指两个字串之间,从一个转成另一个所需要的最少编辑操作次数,许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 
    问题 
        给定两个字符串S1和S2,求S2和S1的编辑距离,即至少需要经过多少步编辑操作才可以将S1变成S2。

    分析 
        定义“状态” edit[i][j],表示将S1的长度为i的前缀S1[1...i]到S2的长度为j的前缀S2[1....j]的编辑距离。则显然有:

    if (i == 0 && j == 0)
        edit[i][j] = 0;
    else if (i == 0 && j > 0)
        edit[i][j] = j;
    else if(j == 0 && i > 0)
        edit[i][j] = i;
    else
        edit[i][j] = min{edit[i-1][j] + 1, edit[i][j-1] + 1, edit[i-1][j-1] + f(i, j)}
    //其中,当第一个字符串的第i个字符不等于第二个字符串的第j个字符时,f(i, j) = 1; 否则 = 0.
    
  • 相关阅读:
    jqmodal遮罩层的实现
    让Editplus和SVN集成
    asp.net很有用的字符串操作类
    TCP socket编程
    Adroid: ProgressBar 的使用
    在想的事情......
    I'm new to CNBlogs!
    压力
    开心工作
    feature
  • 原文地址:https://www.cnblogs.com/gtarcoder/p/4848899.html
Copyright © 2011-2022 走看看