1072: 编辑距离

时间限制(普通/Java):1000MS/10000MS     内存限制:65536KByte

总提交: 917            測试通过:275

描写叙述

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


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

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


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

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

输入

输入包括多组測试数据。

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


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

输出

编辑距离。

例子输入

ABC CBCD

例子输出

2

提示

我相信动态规划算法能解决这题。由于我就是这样做的。

^_^

题目来源

ZJGSU

#include<stdio.h>
#include<string.h>
int dp[1029][1029];
int main()
{ char str1[1029],str2[1029];
while(scanf("%s%s",str1,str2)>0)
{
int len1,len2;
len1=strlen(str1);
len2=strlen(str2);
for(int i=0;i<=len2;i++)//注意初始化
dp[0][i]=i;
for(int i=0;i<=len1;i++)
dp[i][0]=i;
for(int i=1;i<=len1;i++)
for(int j=1;j<=len2;j++)
if(str1[i-1]==str2[j-1])
{
dp[i][j]=dp[i-1][j-1];
}
else
{
dp[i][j]=dp[i-1][j]+1;//冊除字符str1[i]
if(dp[i][j-1]+1<dp[i][j])dp[i][j]=dp[i][j-1]+1;//加入字符str2[j]到str1
if(dp[i-1][j-1]+1<dp[i][j])dp[i][j]=dp[i-1][j-1]+1;//把str1[i]变成str2[j]
}
printf("%d\n",dp[len1][len2]);
}
}

TZOJ 1072: 编辑距离(动态规划)的更多相关文章

  1. [LeetCode] 72. 编辑距离 ☆☆☆☆☆(动态规划)

    https://leetcode-cn.com/problems/edit-distance/solution/bian-ji-ju-chi-mian-shi-ti-xiang-jie-by-labu ...

  2. POJ_3356——最短编辑距离,动态规划

    Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...

  3. 72. Edit Distance(编辑距离 动态规划)

    Given two words word1 and word2, find the minimum number of operations required to convert word1 to  ...

  4. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  5. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

  6. LeetCode Top 100 Liked 点赞最高的 100 道算法题

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:刷题顺序,刷题路径,好题,top100,怎么刷题,Leet ...

  7. 【TOJ 1072】编辑距离(动态规划)

    描述 假设字符串的基本操作仅为:删除一个字符.插入一个字符和将一个字符修改成另一个字符这三种操作. 我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作. 下面我们定义两个字符串的编辑 ...

  8. 编辑距离及其动态规划算法(Java代码)

    编辑距离概念描述 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.一般情况下编辑操作包括: 将一个字符替换成另一个字符: 插入一个字符: 删除一个字 ...

  9. CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划)

    CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划) Description 字符串是数据结构和计算机语言里很重要的数据类型,在计算机语言中,对于字符串我们有很多的操作定义,因 ...

随机推荐

  1. 查看Android手机数据库

    有的时候,手机没有root,无法查看数据库,甚不方便,好在Github上有解决方案: Github地址:https://github.com/king1039/Android-Debug-Databa ...

  2. 实现RMQ的两种常用方法

    RMQ RMQ(Range Maximum/Minimum Question)是指区间最值问题,在OI中较为常见,一般可以用ST表和线段树实现. ST表是基于倍增思想的一种打表方法,在确定区间范围和所 ...

  3. disconf-client-for-java

    一.disconf客户端部署 disconf目前仅支持java客户端,下文针对java客户端安装作为整理,记录下安装部署的步骤 1.环境依赖 首先需要安装java环境及maven环境,不再过多介绍 2 ...

  4. Python学习之pillow库入门

    http://python.jobbole.com/84956/ 我还是搬运工......

  5. 在Azure中创建asp.net core 应用

    0.前言 在玩转Azure之前首先大家要有Azure账号,或者可以先申请一下微软的账号,然后进行与Azure的关联(azure账号是免费的).但是关联的步骤还是很有意思的,他需要VISA国际信用卡(我 ...

  6. 光线求交-面、三角形、球 (Ray intersection)

    光线求交 光线定义:position \(a(t)\) = \(o\) + \(t\vec{d}\); 球定义: center p, radius r; 平面定义:normal \(\vec{n}\) ...

  7. Tornado(一)

    Tornado 特点 Tornado是一个用Python写的相对简单的.不设障碍的Web服务器架构,用以处理上万的同时的连接口,让实时的Web服务通畅起来.虽然跟现在的一些用Python写的Web架构 ...

  8. 「学习笔记」wqs二分/dp凸优化

    [学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \l ...

  9. 20172333 2017-2018-2 《Java程序设计》第11周学习总结

    20172333 2017-2018-2 <Java程序设计>第11周学习总结 教材学习内容 对于Android Studio的安装以及对安卓的一些基本组成,比如说四大组件Acticity ...

  10. redis实现简单延时队列(转)

    继之前用rabbitMQ实现延时队列,Redis由于其自身的Zset数据结构,也同样可以实现延时的操作 Zset本质就是Set结构上加了个排序的功能,除了添加数据value之外,还提供另一属性scor ...