编辑距离
来源:互联网 发布:78团淘宝兼职是真的吗 编辑:程序博客网 时间:2024/06/05 19:21
编辑距离
Description
字符串是数据结构和计算机语言里很重要的数据类型,在计算机语言中,对于字符串我们有很多的操作定义,因此我们可以对字符串进行很多复杂的运算和操作。实际上,所有复杂的字符串操作都是由字符串的基本操作组成。例如,把子串
因此,在复杂字符串操作的编程中,为了提高程序中字符操作的速度,我们就应该用最少的基本操作完成复杂操作。
在这里,假设字符串的基本操作仅为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。
我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作。
下面我们定义两个字符串的编辑距离:对于两个字符串
例如,如
你的任务就是:编一个最快的程序来计算任意两个字符串的编辑距离。
Input
第
注:字符串的长度不大于
Output
编辑距离。
Sample Input
ABC
CBCD
Sample Output
2
Solution
设
若
若
Code
#include <iostream>#include <cstdio>#include <cstring>#define Min(x,y) ((x)<(y)?(x):(y))using namespace std;char a[1010],b[1010];int f[1010][1010];int main(){ freopen("edit.in","r",stdin); freopen("edit.out","w",stdout); scanf("%s%s",a,b); int la=strlen(a),lb=strlen(b); for(int i=0;i<la;i++)f[i+1][0]=i+1; for(int i=0;i<lb;i++)f[0][i+1]=i+1; for(int i=0;i<la;i++) for(int j=0;j<lb;j++) if(a[i]==b[j]) f[i+1][j+1]=f[i][j]; else f[i+1][j+1]=Min(Min(f[i+1][j]+1,f[i][j+1]+1),f[i][j]+1); printf("%d\n",f[la][lb]); return 0;}
0 0
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- FLUME日志收集详解
- 2016“欧洲杯”人群画像分析 6大营销洞察解读
- 关于oc中的#define 宏定义
- WinsCP 连接 AWS EC2的问题和解决
- php模糊图片 函数
- 编辑距离
- QTP 依次读取文本中的各行数据
- AsyncTask源码浅析
- angular 1与angular2区别
- 字符集、编码、转码、转义
- 获取非行间样式
- 使用ant编译java class
- 《Netty in Action》中文版 — 第一部分前言
- oracle官网下载java API