1 条题解

  • 0
    @ 2025-4-14 18:43:47

    C++ :

    #include <iostream>
    #include <cmath>
     
    #define MAX 100000    //标识最大的可能整数
     
    int val[300][300];
     
    std::string stra;        //字符串A
    std::string strb;       //字符串B
    int k;        //定值k
     
    //返回字符a与b的ASCII码的差的绝对值
    int dist(char a, char b)
    {
             return abs(a-b);     
    }
     
    int comp()
    {
             int len1, len2;
             int tmp;
             val[0][0] = 0;
             len1 =    stra.length();
             len2 = strb.length();
            
             for(int i=0; i<=len1; i++)   //字符串A和B的有效下标是º1~len,下标0表示空字符串
             {                                                                //i或j是0表示A或B串为空串
                       for(int j=0; j<=len2; j++)
                       {
                                if(i+j)//i和j至少一个大于0
                                {
                                         val[i][j] = MAX;
                                        
                                         tmp = val[i-1][j] + k;
                                         if(i && (tmp<val[i][j]))//i大于0
                                                   val[i][j] = tmp;
                                                  
                                         tmp = val[i][j-1]+k;
                                         if(j && (tmp<val[i][j]))//j大于0
                                                   val[i][j] = tmp;
                                                  
                                         tmp = val[i-1][j-1] + dist(stra[i], strb[j]);
                                         if((i*j) && (tmp<val[i][j])) //i和j至少有一个不为0
                                                   val[i][j] = tmp;                                          
                                }
                       }       
             }
             return val[len1][len2];
    }
     
    int main()
    {
             std::cin>>stra>>strb>>k;
             stra = " " + stra;      //此处在字符串开头添加一个空格,是为了使字符串stra
             strb = " " + strb;    //的控制台输入的有效字符下标从1到stra.length()
             std::cout<<comp()<<std::endl;
            // system("pause");
             return 0;
    }
    
    • 1

    信息

    ID
    3257
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者