`
zy3381
  • 浏览: 157505 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

编辑距离(递归)

 
阅读更多
#include<stdio.h>
int dis(char *s1, int begin1, int end1, char *s2, int begin2, int end2)
{
    if(begin1>end1)
    {
        if(begin2>end2)
        {
            return 0;
        }
        else
        {
            return end2-begin2+1;
        }
    }
    if(begin2>end2)
    {
        if(begin1>end1)
        {
            return 0;
        }
        else
        {
            return end1-begin1+1;
        }
    }
    if(s1[begin1] == s2[begin2])
    {
        return dis(s1, begin1+1, end1, s2, begin2+1, end2);
    }
    else
    {
        int t1 = dis(s1, begin1+1, end1, s2, begin2, end2);
        int t2 = dis(s1, begin1, end1, s2, begin2+1, end2);
        int t3 = dis(s1, begin1+1, end1, s2, begin2+1, end2);
        t1 = t1<t2?t1:t2;
        t3 = t1<t3?t1:t3;
        return t3+1;
    }
}

void main()
{
    char s1[] = "ABC";
    char s2[] = "CBCD";
    int result = dis(s1, 0, 3, s2, 0, 4);
    printf("%d", result);
}











分享到:
评论

相关推荐

    递归解编辑距离问题源码

    设A和B是2个字符串.要用最少的字符操作将字符串A转换为字符...将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B).试设计一个有效算法,对任给的2个字符串A和B,计算出他们的编辑距离d(A,B)

    编辑距离自动机

    通过动态规划的方法,我们可以递归地计算出整个矩阵,最后返回右下角的值,即为两字符串的编辑距离。 在提供的代码文件"LevenshteinAutomata"中,开发者可能实现了以下功能: 1. 创建一个编辑距离自动机类,该类...

    2014年重庆理工大学《算法分析与设计》三套期末考试试卷.pdf

    试卷中对编辑距离递归公式的填空和伪代码的编写,要求学生能够理解并应用动态规划解决实际问题。 通过这些试卷内容,学生可以系统地学习算法分析与设计的知识,包括基本概念、各类算法的原理和应用,以及它们的效率...

    字符串的相似度 编辑距离 java实现

    我们可以使用递归公式来计算编辑距离: * 如果当前字符相同,编辑距离不变 * 如果当前字符不同,编辑距离加 1 通过这种方式,我们可以计算出两个字符串之间的编辑距离,从而计算出字符串相似度。 编辑距离算法在...

    ld.rar_LD算法_edit distance_最小编辑距离_编辑距离

    标签中的“ld算法”、“edit_distance”、“最小编辑距离”和“编辑距离”都是对同一个概念的不同表述,即上述的莱文斯坦距离。 压缩包中的文件“www.pudn.com.txt”可能是某个网站或论坛上关于这个话题的讨论记录...

    编辑距离 EditDistance

    在实现编辑距离算法时,我们还需要考虑优化,例如使用滚动数组来节省空间,以及使用迭代而不是递归以提高效率。同时,对于大型输入,可以考虑使用更高效的数据结构,如自定义的树状数组或位运算技巧,来加速计算。 ...

    python编辑距离问题.zip

    这个压缩包中的"编辑距离问题"可能包含了多种实现方式,比如可能会有递归版本、迭代版本,或者采用了不同的优化策略。通过阅读和分析源代码,我们可以学习到更多关于编辑距离算法的细节,以及如何在Python中有效地...

    编辑距离问题1

    在实际编程实现中,通常使用二维数组或动态规划表来存储中间结果,从较小的子问题递归地计算较大的子问题,最终得到`word1`和`word2`的编辑距离。 这个算法的时间复杂度是O(nm),其中n和m分别是`word1`和`word2`的...

    算法设计动态规划(编辑距离).doc

    最终的编辑距离d[n][m]就是矩阵的右下角元素,它表示A和B的完整字符串之间的编辑距离。 以下是一个简单的C++代码实现,展示了如何计算编辑距离: ```cpp #include #include int min(int a, int b) { return a ...

    c++-c++编程基础之leetcode题解第72题编辑距离.zip

    标题"**c++-c++编程基础之leetcode题解第72题编辑距离.zip**"指的是一个关于C++编程的学习资源,特别针对LeetCode网站上的第72题“编辑距离”(Edit Distance)的问题。LeetCode是一个在线平台,提供了各种算法题目...

    python-leetcode面试题解之第72题编辑距离.zip

    在LeetCode的面试题目中,第72题“编辑距离”(Edit Distance)是一个经典的算法问题,它涉及到了字符串操作、动态规划和递归等编程概念。本题解将深入探讨这个问题的背景、解决方案以及Python实现。 ### 问题背景 ...

    Java动态规划之编辑距离问题示例代码

    在上面的代码中,我们使用递归来解决编辑距离问题。我们首先检查序列S和T的末尾字符是否相等,如果相等,则不需要进行任何操作,直接返回上一个子问题的解。如果不相等,则需要选择三种操作:删除、插入和修改字符,...

    Python实现计算最小编辑距离

    ### Python 实现计算最小编辑距离 #### 背景与定义 最小编辑距离,也称为莱文斯坦距离(Levenshtein Distance),是指在两个字符串之间进行转换所需的最少编辑操作次数。这里的编辑操作包括三种基本类型:插入一个...

    ACM递归与动态规划(一)

    著名的例子包括背包问题、最长公共子序列和最小编辑距离等。 递归与动态规划之间的联系与区别在于: 1. **联系**:两者都基于分治思想,通过解决子问题来解决整个问题。它们都可以用来处理具有重叠子问题的问题,...

    设计一个动态规划算法求解最长公共子序列问题设计一个动态规划算法解决编辑距离问题

    求X和Y的最长公共子序列长度以及最长公共子序列 2 对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。 随机产生20以上的字符,放入输入文件input.txt,如:X={A,B,C,B,D,A,B}和Y={B,D,C,A,B,A}。 程序运行结束...

    零基础入门深度学习(7) - 递归神经网络 - 作业部落 Cmd Markdown 编辑阅读器.pdf

    在语义向量空间中,语义相近的元素向量距离较近,而语义差异大的元素向量距离较远。这种向量空间的特性使得模型可以捕捉到自然语言中词、短语、句子、段落和篇章之间的语义联系。递归神经网络通过这样的向量表示能够...

    易语言编辑距离算法源码-易语言

    这个过程可以通过递归或动态规划的方法实现,易语言源码文件"编辑距离算法.e"应该展示了这样的实现。 在学习这个源码时,我们可以深入了解易语言的语法特性,如变量声明、数组操作、循环控制(如For和While循环)、...

    计算字符串的相似度

    本文将详细解析如何通过编辑距离(又称Levenshtein距离)算法来计算两个字符串的相似度,包括算法原理、递归与动态规划实现方式及其优化。 #### 编辑距离算法原理 编辑距离是一种衡量两个字符串差异的方法,定义为...

    递归算法.zip

    常见的动态规划问题包括背包问题、最长递增子序列、编辑距离等。 贪心算法:贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法。常见的贪心算法包括最小生成树算法中的Prim算法、Dijkstra算法等。 字符...

    42丨动态规划实战:如何实现搜索引擎中的拼写纠错功能?1

    在实现这一功能时,关键在于如何衡量两个字符串的相似度,这通常通过计算它们的【编辑距离】来完成。 编辑距离(Edit Distance)是一种衡量两个字符串之间差异的方法,它定义为将一个字符串转换为另一个字符串所需...

Global site tag (gtag.js) - Google Analytics