TZOJ 1072: 编辑距离(动态规划)
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
提示
我相信动态规划算法能解决这题。由于我就是这样做的。
^_^
题目来源
#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: 编辑距离(动态规划)的更多相关文章
- [LeetCode] 72. 编辑距离 ☆☆☆☆☆(动态规划)
https://leetcode-cn.com/problems/edit-distance/solution/bian-ji-ju-chi-mian-shi-ti-xiang-jie-by-labu ...
- POJ_3356——最短编辑距离,动态规划
Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...
- 72. Edit Distance(编辑距离 动态规划)
Given two words word1 and word2, find the minimum number of operations required to convert word1 to ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- LeetCode Top 100 Liked 点赞最高的 100 道算法题
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:刷题顺序,刷题路径,好题,top100,怎么刷题,Leet ...
- 【TOJ 1072】编辑距离(动态规划)
描述 假设字符串的基本操作仅为:删除一个字符.插入一个字符和将一个字符修改成另一个字符这三种操作. 我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作. 下面我们定义两个字符串的编辑 ...
- 编辑距离及其动态规划算法(Java代码)
编辑距离概念描述 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.一般情况下编辑操作包括: 将一个字符替换成另一个字符: 插入一个字符: 删除一个字 ...
- CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划)
CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划) Description 字符串是数据结构和计算机语言里很重要的数据类型,在计算机语言中,对于字符串我们有很多的操作定义,因 ...
随机推荐
- keycloak学习
keycloak 是一个针对Web应用和RESTfull Web API 提供SSO(Single Sign On:单点登陆),它是一个开源软件,源码地址是:https://github.com/ke ...
- thinkphp5.0 配置格式
ThinkPHP支持多种格式的配置格式,但最终都是解析为PHP数组的方式. PHP数组定义 返回PHP数组的方式是默认的配置定义格式,例如: //项目配置文件 return [ // 默认模块名 'd ...
- list容器详解
首先说说STL ( STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件.STL现在是C++的一部分,因此不用额外安装什么.它被内建在你的编译器之内.因为STL的list是一个简单的容器, ...
- disconf-web 分布式配置管理平台
一.需求 实现分布式配置中心:(1)集中管理外部依赖的服务配置和服务内部配置(2)提供web管理平台进行配置和查询(3)支持服务注册与发现(4)支持客户端拉取配置(5)支持订阅与发布,配置变更主动通知 ...
- Unity 2D游戏开发教程之精灵的死亡和重生
Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...
- 【BZOJ 4361】 4361: isn (DP+树状数组+容斥)
4361: isn Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 218 Solved: 126 Description 给出一个长度为n的序列A( ...
- [BZOJ5427]最长上升子序列
考虑O(n log n)的LIS求法,dp[i]表示到目前为止,长度为i的LIS的末尾最小是多少. 当当前数确定时直接用LIS的求法更新dp数组,当不确定时,由于这个数可以是任意数,所以可以接在任意上 ...
- div块元素垂直水平居中方法总结
1.已知块级元素的宽和高,使用绝对定位+外边距设定水平垂直居中. 父元素position:relative,子元素position:absolute;top:50%;left:50%;margin-t ...
- bzoj1954 The xor-longest path
Description 给定一棵n个点的带权树,求树上最长的异或和路径 Input The input contains several test cases. The first line of ...
- PAT甲级1107. Social Clusters
PAT甲级1107. Social Clusters 题意: 当在社交网络上注册时,您总是被要求指定您的爱好,以便找到一些具有相同兴趣的潜在朋友.一个"社会群体"是一群拥有一些共同 ...