洛谷_2758 编辑距离
来源:互联网 发布:oracle启动数据库命令 编辑:程序博客网 时间:2024/06/07 05:42
题意:
求一个字符串变成另一个字符串的最少编辑次数。
思路:
用f[i][j]记录ai到bj的最短编辑距离,可以得出动态转移方程:
当a[i]=b[j]时,f[i][j]=f[i-1][j-1];否则f[i][j]=min(f[i-1][j-1]+1,f[i][j-1]+1,f[i-1][j]+1,
其中f[i-1][j-1]+1代表把a[i]改为b[j],f[i][j-1]+1代表a[i]后面插入b[j-1],f[i-1][j]+1代表删掉a[i]。
其中f[i-1][j-1]+1代表把a[i]改为b[j],f[i][j-1]+1代表a[i]后面插入b[j-1],f[i-1][j]+1代表删掉a[i]。
代码:
#include<cstdio>#include<cstring>int f[2002][2002],m,n;char a[2002],b[2002];int min(int x,int y) {return x>y?y:x;}int main(){ scanf("%s%s",a,b); m=strlen(a);n=strlen(b); for (int i=1;i<=m;i++) f[i][0]=i; for (int i=1;i<=n;i++) f[0][i]=i;//赋初值 for (int i=1;i<=m;i++) for (int j=1;j<=n;j++) if (a[i-1]==b[j-1]) f[i][j]=f[i-1][j-1];//相同就不用改 else f[i][j]=min(min(f[i-1][j],f[i][j-1]),f[i-1][j-1])+1;//这样写是为了简化 printf("%d\n",f[m][n]);}
阅读全文
0 0
- 洛谷_2758 编辑距离
- 【洛谷P2758】编辑距离
- 洛谷【P2758】-编辑距离
- 【CJOJ1644】【洛谷2758】编辑距离
- (洛谷 2758)编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- jvm Gc的机制
- 判断Windows版本的头文件
- java上传文件到linux上 防止文件名中文乱码
- 图像特征描述子之FREAK
- 回车和换行的区别
- 洛谷_2758 编辑距离
- python从入门到入坟 五(吕万友)
- 修改启动图片和等待时间
- Ubuntu下 正确安装VMware Tools
- 数据结构实验之查找六:顺序查找
- cxz
- LC-Next Greater Element I
- leetcode 680. Valid Palindrome II
- CSDN添加表格神器