zoukankan      html  css  js  c++  java
  • 编辑距离(经典DP)

    #include<stdio.h>
    #include<string.h>
    int dp[1005][1005];
    char str1[1005],str2[1005];
    int min(int a,int b,int c){
        int min=a;
        if(min>b) min=b;
        if(min>c) min=c;
        return min;
    }
     
    int main()
    {
        int n,m;
        while(scanf("%d%s",&n,str1)==2){
            scanf("%d%s",&m,str2);
            for(int i=0;i<=n;i++)
                dp[i][0]=i;//初始化str1前i个字符转化为str2的前0字符的操作数
            for(int j=0;j<=m;j++)
                dp[0][j]=j;//初始化str1前0个字符转化为str2的前j字符的操作数
            int ok;
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++){
                    str1[i-1]==str2[j-1]?ok=0:ok=1;
                    dp[i][j]=min(dp[i-1][j-1]+ok,dp[i-1][j]+1,dp[i][j-1]+1);
                }
            }
            printf("%d
    ",dp[n][m]);
        }
     
        return 0;
    }
    #include <iostream>
    using namespace std;
    #define MAXS 1010
    
    char str1[MAXS],str2[MAXS];
    int len1,len2;
    
    int f[MAXS][MAXS];            //记录下str1取i个,str2取j个最少操作次数
    
    int min(int a,int b){
        return a<b?a:b;
    }
    
    int main(){
        int i,j;
        while(cin>>len2>>str2){
            cin>>len1>>str1;
    
            f[0][0] = 0;
            for(i = 1;i <= len1;i++){
                f[i][0] = i;
            }
            for(i = 1;i <= len2;i++){
                f[0][i] = i;
            }
    
            for(i = 1;i <= len1;i++){
                for(j = 1;j <= len2;j++){
                    int tmp = f[i - 1][j - 1] + (str1[i - 1]==str2[j - 1]?0:1);
                    tmp = min(f[i - 1][j] + 1,tmp);
                    f[i][j] = min(f[i][j - 1] + 1,tmp);
                }
            }
    
            cout<<f[len1][len2]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    记录我的第一次电话面试
    Spring整合Mybatis出现Access denied for user 'Think'@'localhost' (using password: YES)
    Lombok基本使用
    log4j整理
    mybatis常用的配置解析
    Java实现邮件发送
    Java获取UUID
    Java实现文件下载
    Java实现文件上传
    Java跳出多层for循环的4种方式
  • 原文地址:https://www.cnblogs.com/NWUACM/p/6574572.html
Copyright © 2011-2022 走看看