zoukankan      html  css  js  c++  java
  • [洛谷P1279][题解]字串距离

    题目戳我

    很明显的这题是一道dp,主要讲一下几个细节

    1.初始化

    我们需要初始化边界情况也就是一个字符串为空的情况

    #----------#      #----------#
    A:aaaaaa         A:□□□□□□
    B:□□□□□□     or  B:bbbbbb
    #----------#      #----------#

    这时f[i][0]=i*k,f[0][j]=j*k。

    另外注意都为空也就是f[0][0]=0

    2.dp

    这道题的转移有三种

    (1)字符对字符
    A:xxx...a
    B:xxx...b
    由f[i-1][j-1]转移得来
    (2)字符对空格
    A:xxx...a
    B:xxx...□
    或
    A:xxx...□
    B:xxx...b
    由f[i-1][j]或f[i][j-1]转移得来

    具体看代码

    #include<bits/stdc++.h>
    using namespace std;
    string a,b;
    
    inline int d(char a,char b){
        return a>b?(int)a-b:(int)b-a;
    }
    //f[i][j]表示A_i与B_j的距离 
    int f[2333][2333],k;
    //1.初始化 
    inline void Ini(){
        for(int i=1;i<=a.length();i++)f[i][0]=i*k;
        for(int i=1;i<=b.length();i++)f[0][i]=i*k;
        f[0][0]=0;
    }
    
    int main()
    {
        cin>>a>>b>>k;
        Ini();
        //2.dp部分 
        for(int i=1;i<=a.length();i++){
            for(int j=1;j<=b.length();j++){
                f[i][j]=min(min(f[i-1][j],f[i][j-1])+k,f[i-1][j-1]+d(a[i-1],b[j-1]));
            }
        }
        
        cout<<f[a.length()][b.length()]<<endl;
        return 0;
    }

    完结撒花

  • 相关阅读:
    Go语言的运算符
    Nginx基本安全优化
    在LNMP环境中部署一个blog服务程序
    PHP缓存加速器
    Go语言基础语法
    Go语言数据类型
    Go语言变量
    Go语言常量
    Go语言结构
    LNMP之PHP安装
  • 原文地址:https://www.cnblogs.com/juruoajh/p/11821698.html
Copyright © 2011-2022 走看看