编辑距离

nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; padding-right:0px; color:rgb(83,113,197); text-decoration:none; padding-top:0px">

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

如果字符串的基本操作仅为:删除一个字符、插入一个字符和将一个字符改动成还有一个字符这三种操作。

我们把进行了一次上述三种操作的随意一种操作称为进行了一步字符基本操作。

以下我们定义两个字符串的编辑距离:对于两个字符串a和b。通过上述的基本操作。我们能够把a变成b或b变成a,那么字符串a变成字符串b须要的最少基本字符操作步数称为字符串a和字符串b的编辑距离。

比如:a="ABC",b="CBCD",则a与b的编辑距离为2。

你的任务就是:编一个高速的程序来计算随意两个字符串的编辑距离。

输入

输入包括多组測试数据。

每组測试数据一行,为字符串A和字符串B。

字符串的长度不大于1024。且全为字母。

输出

编辑距离。

演示样例输入

ABC CBCD

演示样例输出

2

提示

 

来源

ZJGSU
由a串变为b串,三种操作,写成二维的dp后,dp[i][j]代表a串匹配到i,b串匹配到j时一共须要的步数。

假设s1[i] == s2[j]那么直接能够从 dp[i-1][j-1]得到。或是dp[i-1][j]+1代表加入一个字符,dp[i][j-1]+1代表删除一个字符中得到
假设不同样。那么和上面同样,仅仅须要变化为dp[i-1][j-1]+1代表改动一个字符。
 
#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

char s1[1200] , s2[1200] ;

int dp[1200][1200] ;

int main()

{

    int i , j , l1 , l2 ;

    while(scanf("%s %s", s1, s2)!=EOF)

    {

        memset(dp,0,sizeof(dp));

        l1 = strlen(s1) ;

        l2 = strlen(s2) ;

        for(i = 0 ; i <= l1 ; i++)

            dp[i][0] = i ;

        for(j = 0 ; j <= l2 ; j++)

            dp[0][j] = j ;

        for(i = 1 ; i <= l1 ; i++)

        {

            for(j = 1 ; j <= l2 ; j++)

            {

                if( s1[i-1] == s2[j-1] )

                    dp[i][j] = min(dp[i-1][j-1],min(dp[i-1][j]+1,dp[i][j-1]+1) );

                else

                    dp[i][j] = min(dp[i-1][j-1]+1,min(dp[i-1][j]+1,dp[i][j-1]+1) ) ;

            }

        }

        printf("%d\n", dp[l1][l2]);

    }

    return 0;

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

sdutoj1225--编辑距离(dp:字符串转换)的更多相关文章

  1. Gson将字符串转换成JsonObject和JsonArray

    以下均利用Gson来处理: 1.将bean转换成Json字符串: public static String beanToJSONString(Object bean) { return new Gso ...

  2. JS 实现"可读"字符串转换成"二进制的01"字符串

    问题起源 看过一个漫画, 两位程序员在办公司交流, 可是说的语言却是010101类似的字符串.周围人很是惊异.计算机的世界,确实是由01组成的.今天突然想实现这个编码转换. 解决思路 学过C语言的都知 ...

  3. C标准库-数值字符串转换与内存分配函数

    原文链接:http://www.orlion.ga/977/ 一.数值字符串转换函数 #include <stdlib.h> int atoi(const char *nptr); dou ...

  4. js 字符串转换数字

    方法主要有三种转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对 ...

  5. List转换成json格式字符串,json格式字符串转换成list

    一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...

  6. PHP面试题之驼峰字符串转换成下划线样式例子

    自己在看到这个问题的时候,想到的是用ASCII码来处理,没往万能的正则上去想.好吧,下面来看看答案: 答案1: 代码如下 复制代码 $str = 'OpenAPI'; $length = mb_str ...

  7. js 字符串转换成数字的三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

  8. java-装箱/拆箱-字符串转换成基本数据类型

    一.理解java中包的含义及种类 java是一个面向对象编程,即一切皆是对象,那么有一个矛盾,从数据上划分知道java中的数据分为基本数据类型和引用数据类型,但是基本数据类型如何是一个对象呢?此时,就 ...

  9. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  10. sql 将8位字符串转换成日期型

    将8位字符串转换成日期型,方法如下: ),)

随机推荐

  1. crx 【 集合 】

    Vimium dbepggeogbaibhgnhhndojpepiihcmeb-1.64-Crx4Chrome.com.crx https://www.crx4chrome.com/down/731/ ...

  2. JDK8 JVM性能优化-1

    原文地址:https://blog.csdn.net/xingkongtianma01/article/details/80689928 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的 ...

  3. chrome-vimium在markdown插件的页面失去效果

    chrome-vimium在markdown插件的页面失去效果

  4. 【C++竞赛 C】yyy的数学公式

    时间限制:1s 内存限制:32MB 问题描述 yyy遇到了一个数学问题如下: S_n=∑F(i) 其中F(i)表示i的最大奇因数 yyy的数学非常好,很快就得到了结果.现在他把问题交给你,你能解决吗? ...

  5. php定时任务(自己)

    php定时任务(自己) 一.总结 一句话总结:可用php.exe连接php文件和bat文件,bat文件在计划任务中可以设置定时执行, 二. 1.php 2.bat E: "D:\softwa ...

  6. [NativeScript] Create new application and run emulator

    Install: npm i -g nativescript Create: tns create <app_name> --ng Run: tns emulate ios List al ...

  7. js 进阶 10 js选择器大全

    js 进阶 10 js选择器大全 一.总结 一句话总结:和css选择器很像 二.JQuery选择器 原生javaScript中,只能使用getELementById().getElementByNam ...

  8. 【t054】糟糕的网络

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 前几天sqybi 还在高高兴兴的用BOINC 完成着一个又一个的任务呢,但现在sqybi 突然变得闷闷 ...

  9. ORACLE中死锁

    ORACLE中死锁的知识点总结   死锁的概念 什么是死锁呢? 其实我们生活中也有很多类似死锁的例子. 我先举一个生活中的例子:过年回家,父亲买了一把水弹枪,儿子和侄子争抢着要先玩,谁也不让谁,拆开包 ...

  10. WPF入门(三)->几何图形之线条(LineGeometry)

    原文:WPF入门(三)->几何图形之线条(LineGeometry) 前一章我们对wpf的xaml语言有了一定的了解,那么我们现在开始来学习如何使用wpf来画出几何图形. LineGeometr ...