zoukankan      html  css  js  c++  java
  • 计算字符串的距离——动态规划

    #include<iostream>
    #include<string.h>
    using namespace std;
    
    int dp[100][100];
    
    int min(int a, int b)
    {
        if(a<b) return a;
        else return b;
    }
    
    int main()
    {
        char str1[100];
        char str2[100];
    
        cin>>str1>>str2;
    
        int num1 = strlen(str1);
        int num2 = strlen(str2);
    
        if(str1[0]==str2[0])
            dp[0][0] = 0;
        else
            dp[0][0] = 1;
    
        for(int i=1; i<num2; i++)
        {
            if(str1[0]==str2[i])
                dp[0][i] = dp[0][i-1];
            else
                dp[0][i] = dp[0][i-1] + 1;
        }
    
        for(int i=1; i<num1; i++)
        {
            if(str1[0]==str2[i])
                dp[i][0] = dp[i-1][0];
            else
                dp[i][0] = dp[i-1][0] + 1;
        }
    
        for(int i=1; i<num1; i++)
        {
            for(int j=1; j<num2; j++)
            {
                if(str1[i]==str2[j])
                {
                    dp[i][j] = dp[i-1][j-1];
                }
                else
                {
                    int tmp;
                    tmp = min(dp[i-1][j]+1, dp[i][j-1]+1);
                    tmp = min(tmp, dp[i-1][j-1]+1);
                    dp[i][j] = tmp;
                }
            }
        }
    
        cout<<dp[num1-1][num2-1];
    
        return 0;
    }
    

      

  • 相关阅读:
    自我介绍
    最大连通子数组求和
    敏捷开发方法综述
    第四周学习进度条
    时间日志和缺陷日志
    最大子数组2.0
    最大子数组1.0
    第三周学习进度条
    小学四则运算3.0
    单元测试
  • 原文地址:https://www.cnblogs.com/hardsoftware/p/6231049.html
Copyright © 2011-2022 走看看