zoukankan      html  css  js  c++  java
  • 动态规划之用最少的字符操作将字符串A转换为字符串B

    1.试用动态规划算法实现下列问题:设A和B是两个字符串。我们要用最少的字符操作,将字符串A转换为字符串B,这里所说的字符操作包括:

    (1)删除一个字符。

    (2)插入一个字符。

    (3)将一个字符改为另一个字符。

     请写出该算法:

     1 #include <string.h>
     2 #include <iostream>
     3 using namespace std;
     4 /*将字符串A转换为字符串B最少的操作次数*/ 
     5 int minEditDistance(string A,string B)
     6 {
     7     int A_len=A.length();
     8     int B_len=B.length();
     9     int D[B_len+1][A_len+1];
    10     D[0][0]=0;
    11     for(int i=1;i<=A_len;i++)
    12     {
    13         D[0][i]=i;
    14     } 
    15     for(int i=1;i<=B_len;i++)
    16     {
    17         D[i][0]=i;
    18     }  
    19     for(int i=1;i<=B_len;i++)
    20     {
    21         for(int j=1;j<=A_len;j++)
    22             D[i][j]=min(min(D[i-1][j]+1,D[i][j-1]+1),(A[j-1]==B[i-1]?D[i-1][j-1]:D[i-1][j-1]+1));
    23     } 
    24     return D[B_len][A_len];
    25 }
    26 /*主函数*/
    27 int main()
    28 {
    29     string A,B;
    30     cin>>A>>B;
    31     cout<<minEditDistance(A,B);
    32 }
  • 相关阅读:
    第五天
    第四天
    第三天
    四则运算2
    对于搜狗输入法
    用户及用户场景分析
    总结
    第一阶段总结
    第七天
    第六天
  • 原文地址:https://www.cnblogs.com/ma1998/p/12149578.html
Copyright © 2011-2022 走看看