博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编辑距离问题
阅读量:3531 次
发布时间:2019-05-20

本文共 1286 字,大约阅读时间需要 4 分钟。

n题目描述

假设字符串的基本操作仅为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。

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

n输入

输入包含两行:第一行为字符串A,第二行为字符串B。

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

n输出

输出只有一行,为编辑距离。

n样例输入

ABC

CBCD

0 A1 B2 C3
C1 1 2 2
B2 2 1 2
C3 3 2 1
D4 4 3 2
n样例输出

2

n乍一看仿佛是搜索,但仔细一想,这道题用搜索是不可能实现的(至少我是这么认为的)。那么我们就要采取新的策略:动态规划。
n我们知道,所有的动规问题都是可以分段解决的,那么这道题也是如此。我们可以把长的字符串拆解为短的字符串,一直拆解到只剩下一个字符为止。

#include 
#include
#include
#include
using namespace std;const int MAXN = 5005;char dest[MAXN];char str[MAXN];int DP(int x, int y){ int i,j,temp; int **dp = new int *[x+1]; for(i=0;i<=x;i++) dp[i] = new int[y+1]; for(i=0;i<=x;i++) dp[i][0] = i; for(j=0;j<=y;j++) dp[0][j] = j; for(i=1;i<=x;i++) { for(j=1;j<=y;j++) { temp = min(dp[i-1][j] + 1,dp[i][j-1] + 1); if(dest[i-1] == str[j-1]) { dp[i][j] = dp[i-1][j-1]; } else { dp[i][j] = min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1]) + 1; } } } temp = dp[x][y]; for(i=0;i<=x;i++) delete []dp[i]; delete []dp; return temp;}int main(){ freopen("in.txt","r",stdin); cin>>dest>>str; int dest_len = strlen(dest); int str_len = strlen(str); cout<
<

转载地址:http://mtyhj.baihongyu.com/

你可能感兴趣的文章
集合,Collection
查看>>
泛型详解
查看>>
泛型实现斗地主
查看>>
List集合
查看>>
ArrayList集合,LinkedList集合,Vector集合
查看>>
HashSet集合
查看>>
并发与并行,线程与进程
查看>>
方法引用,通过对象名引用成员变量
查看>>
常用工具类 Math:数学计算 Random:生成伪随机数 SecureRandom:生成安全的随机数 2020-2-13
查看>>
Java的异常Exception 2020-2-13
查看>>
Java标准库定义的常用异常,自定义异常 2020-2-15
查看>>
Java问题百度/Google记录 2020-2-16
查看>>
【PADS9.5】9,对比ECO核心板,Router移动元件后布线消失,Router找不到自动布线策略文件丢失或损坏
查看>>
【STM32+w5500汇总】23,HTTP_Client 连接到ONENET上传了一段数据之后会断开,数据上传格式的设置
查看>>
【STM32+W5500+MQTT】24,所有功能都可以通过API函数的调用来实现;HTTP接入ONENET,API开发手册和打包函数,串口软件HTTP连接服务器上传数据,2018年12月28日
查看>>
【STM32+W5500+HTTPClient】25,路由器DHCP租赁IP时间为2h,NetBios可以很好的解决IP变化的问题,DNS,2018年12月25日
查看>>
【STM32+MQTT+ONENET】26,MQTT协议接入OneNET
查看>>
【STM32+W5500+MQTT+ONENET】27,MQTT协议接入OneNET实际编程操作 2018年12月27日
查看>>
【STM32Cube+FreeRTOS 】28,KEIL5的F12不起作用;***JLink Error: Can not read register x while CPU is running
查看>>
【STM32CubeMX+FreeRTOS 】29,prtinf卡死;4任务只运行了3个;W5500联网失败(堆栈不能太大或者太小)
查看>>