• 51NOD 1183编辑距离(动态规划)


    》》点击进入原题测试《《

    思路:这个题放在基础题,分值还是零分,好歹也给人家动态规划一点面子啊!刚开始写的想法是找到其最大公共字串,然后用两个字符串中最长字符串的长度减掉最大公共字符串的长度,这个思路应该也是对的,几天前写的,好像没用动态规划写然后错了;然后百度了下是用动态规划,然后重新写了下。换了个思路,然后手写了下样例的dp数组,寻找状态之间的关系。

    以下AC代码:

    #include<string>
    #include<iostream>
    using namespace std;
    const int max = 1010;
    int dp[max][max];
    int main()
    {
        string a, b; cin >> a >> b;
         
        for (int i = 0; i <= a.length(); i++){
            for (int j = 0; j <= b.length(); j++){
                if (i == 0){
                    dp[0][j] = j;
                }
                else{
                    
                    if (j == 0){
                        dp[i][0] = i;
                        continue;
                    }
                    
                    if (a[i - 1] == b[j - 1]) dp[i][j] = dp[i - 1][j - 1];
                    else dp[i][j] = dp[i - 1][j - 1] + 1;
    
                    if (dp[i][j] > dp[i][j - 1] + 1)dp[i][j] = dp[i][j - 1] + 1;
                    if (dp[i][j] > dp[i - 1][j] + 1)dp[i][j] = dp[i - 1][j] + 1;
                    
                }
            }
        }
        cout << dp[a.length()][b.length()] << endl;
        return 0;
    }
  • 相关阅读:
    TCP协议
    各相机品牌型号分类
    思科华为命令对比
    网工笔记(一)
    数学笔记
    word快捷键汇总
    请个假
    word笔记
    ScrollView不能到顶部的解决方法
    Gridview 显示成正方形
  • 原文地址:https://www.cnblogs.com/zengguoqiang/p/9352033.html
Copyright © 2020-2023  润新知