描述

假设字符串的基本操作仅为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。 
我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作。 
下面我们定义两个字符串的编辑距离:对于两个字符串a和b,通过上述的基本操作,我们可以把a变成b或b变成a,那么字符串a变成字符串b需要的最少基本字符操作步数称为字符串a和字符串b的编辑距离。 
例如:a="ABC",b="CBCD",则a与b的编辑距离为2。 
你的任务就是:编一个快速的程序来计算任意两个字符串的编辑距离。

输入

输入包含多组测试数据。每组测试数据一行,为字符串A和字符串B。 
字符串的长度不大于1024,且全为字母。

输出

编辑距离。

样例输入

ABC CBCD

样例输出

2

#include<bits/stdc++.h>
using namespace std;
int dp[][];//第一个串0-i和二个串0-j的编辑距离
int min(int a,int b,int c)
{
int min=a;
if(b<min)min=b;
if(c<min)min=c;
return min;
}
int main()
{
string sa,sb;
while(cin>>sa>>sb)
{
int i,j;
for(i=;i<=sa.size();i++)dp[i][]=i;
for(j=;j<=sb.size();j++)dp[][j]=j;
//计算替换操作的代价,如果两个字符相同,则替换操作代价为0,否则为1
//dp[i-1,j] +1 //在sa上i位置删除字符(或者在sb上j-1位置插入字符)
//dp[i,j-1] +1 //在sa上i-1位置插入字符(或者在sb上j位置删除字符)
//dp[i-1,j-1]+1 //替换操作
for(i=;i<=sa.size();i++)
{
for(j=;j<=sb.size();j++)
{
if(sa[i-]==sb[j-])
dp[i][j]=min(dp[i-][j-],dp[i-][j]+,dp[i][j-]+);
else dp[i][j]=min(dp[i-][j-]+,dp[i-][j]+,dp[i][j-]+);
}
}
printf("%d\n",dp[sa.size()][sb.size()]);
}
return ;
}

【TOJ 1072】编辑距离(动态规划)的更多相关文章

  1. TZOJ 1072: 编辑距离(动态规划)

    1072: 编辑距离 时间限制(普通/Java):1000MS/10000MS     内存限制:65536KByte 总提交: 917            測试通过:275 描写叙述 如果字符串的 ...

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

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

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

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

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

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

  5. 杭电ACM分类

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

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

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

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

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

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

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

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

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

随机推荐

  1. Python实现冒泡,选择排序

    def bubble(num): for i in range(len(num)-1): for j in range(len(num)-i-1): if(num[j]>num[j+1]): t ...

  2. Lambda多表联合

    var query = database.Posts // your starting point - table in the "from" statement .Join(da ...

  3. ORM注意点

    add:是追加 set:是覆盖

  4. 五大常用算法之四:回溯法[zz]

    http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741376.html 1.概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试 ...

  5. HBuilder:一个不错的web前端IDE(代码编辑器)

    Web前端开发,2000之后基本就是三剑客的天下.到现在DW也是不错的HTMLcoder,如今的前端开发早已是JS的天下.但是DW对于JS方面就弱爆了.DW虽然支持JS语法高亮也支持JQuery Jq ...

  6. EasingAnimation

    EasingAnimation https://github.com/YouXianMing/EasingAnimation This class is used for Easing animati ...

  7. SVG中的元素属性

    SVG attributes by category Animation event attributes onbegin, onend, onload, onrepeat Animation att ...

  8. redis.conf 具体配置详解

    redis.conf 具体配置详解 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => ...

  9. POJ3068 "Shortest" pair of paths

    嘟嘟嘟 题目大意:一个有向图,每一条边有一个边权,求从节点\(0\)到\(n - 1\)的两条不经过同一条边的路径,并且边权和最小. 费用流板子题. 发个博客证明一下我写了这题. #include&l ...

  10. thinkphp3.2.3代码审计

    <?php namespace Home\Controller; use Think\Controller; class UserController extends Controller { ...