• poj 3356 AGTC


    本题的意思和我们学校OJ上的编辑距离是一样的,只不过是一个中文,一个英文罢了。

    有3中操作,删除,插入,替换。属于字符串匹配的DP问题。

    如果a[i]==b[j],dp[i][j]=dp[i-1][j-1];

    否则的话,状态转移方程就是dp[i][j]=min(dp[i-1][j]+1,min(dp[i][j-1]+1,dp[i-1][j-1]+1));

    另外写的时候一定要注意初始化的问题。

    -------------------------------------------------

    #include <iostream>
    #include <cstring>
    #include <cmath>
    using namespace std;
    int dp[1000+10][1000+10];
    int main()
    {
        string a,b;
        int i,j,al,bl,ll;
        int t;
        while(cin>>al>>a>>bl>>b)
        {
            ll=max(al,bl);
            for(i=0; i<=al; ++i)
             for(j=0; j<=bl; ++j)
              dp[i][j]=0;
            for(i=1; i<=al; ++i)
             dp[i][0]=dp[i-1][0]+1;
            for(j=1; j<=bl; ++j)
             dp[0][j]=dp[0][j-1]+1;
            for(i=1; i<=al; ++i)
             for(j=1; j<=bl; ++j)
             {
               if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1];
               else dp[i][j]=min(dp[i-1][j]+1,min(dp[i][j-1]+1,dp[i-1][j-1]+1));
             }
            cout<<dp[al][bl]<<endl;
    
        }
        return 0;
    }
  • 相关阅读:
    scala-隐式转换
    scala-泛型
    scala-模式匹配
    scala-LinkedList
    scala-高阶函数
    scala-数组/列表
    scala-map
    scala语法
    机器学习笔记
    Day 1 下午
  • 原文地址:https://www.cnblogs.com/symons1992/p/2733244.html
Copyright © 2020-2023  润新知