美文网首页
CodeVS 2598 编辑距离问题 题解

CodeVS 2598 编辑距离问题 题解

作者: vfence | 来源:发表于2019-01-27 15:26 被阅读0次

    首先分析该问题,看数据大小,应当是一道dp题目,本题求得是最小值

    状态分析

    dp[i][j]表示,字符串Ai个字符到字符串Bj个字符的编辑距离

    转移方程:

    附上Cpp代码

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #define maxn 4003
    #define maxx 0x3f3f3f3f
    char a[maxn],b[maxn];
    int dp[maxn][maxn];
    int al,bl;
    int minn(int ma,int mb,int mc){
        return std::min(std::min(ma,mb),mc);
    }
    int main(){
        std::cin >> a >> b;
        al = strlen(a);
        bl = strlen(b);
        for(int i=0;i<=al;++i){
            for(int j=0;j<=bl;++j){
                dp[i][j] = maxx;
            }
        }
        for(int i=0;i<=al;++i){
            dp[i][0] = i;
        }
        for(int j=0;j<=bl;++j){
            dp[0][j] = j;
        }
        for(int i=1;i<=al;++i){
            for(int j=1;j<=bl;++j){
                if(a[i-1] == b[j-1]){
                    dp[i][j] = dp[i-1][j-1];
                }
                else{
                    dp[i][j] = minn(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;
                }
            }
        }               
        std::cout << dp[al][bl] ;
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:CodeVS 2598 编辑距离问题 题解

          本文链接:https://www.haomeiwen.com/subject/lengjqtx.html