最短编辑距离
来源:互联网 发布:多媒体制作软件工具 编辑:程序博客网 时间:2024/05/18 00:11
#include <iostream>using namespace std;char t[100];char s[100];int dp[100][100];int n,m;int DES1(){ int a,b; for(int i=1;i<=n;i++) dp[0][i] = i; for(int j=1;j<=m;j++) dp[j][0] = j; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ a = min(dp[i-1][j]+1,dp[i][j-1]+1); if(t[i] == s[j]) b = dp[i-1][j-1]; else b = dp[i-1][j-1] + 1; dp[i][j] = min(a,b); } } return dp[n][m];}int d(){ for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ if(t[i]==s[j]) dp[i][j] = dp[i-1][j-1]; else { int cost = t[i] == s[j] ? 0 : 1; int ins=dp[i][j-1]+1; int del=dp[i-1][j]+1; int rep = dp[i-1][j-1] +cost; dp[i][j] = min(min(ins,del),rep); } } cout<<dp[n-1][m-1];}int EDS(int a,int b){ int dis; if(dp[a][b]) return dp[a][b]; if(n==0) dis = m; else if(m==0) dis = n; else if(t[a] == s[b]) EDS(a-1,b-1); else { int cost = t[a] == s[b] ? 0 : 1; int ins=EDS(a,b-1)+1; int del=EDS(a-1,b)+1; int rep = EDS(a-1,b-1)+cost; dis = min(min(ins,del),rep); } return dp[a][b] = dis;}int main(){ while(cin>>n>>m){ for(int i=1;i<=n;i++) cin>>t[i]; for(int i=1;i<=m;i++) cin>>s[i]; cout<<DES1(); } return 0;}
阅读全文
0 0
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离
- 最短编辑距离算法
- HDU3356AGTC(最短编辑距离)
- 最短编辑距离算法
- 最短编辑距离 poj3356
- poj4323 最短编辑距离
- 最短编辑距离2
- 一个神奇高效的工具-正则表达式(五)
- Hdu 4057 AC自动机+DP
- 《逆向工程核心原理》》<07> 反调试技术
- 增强学习 | 多臂赌博机模型进阶
- Ubuntu 16.04 mysql安装配置
- 最短编辑距离
- 单源最短路经
- 植物微生物组培养与重组技术:从描述性研究走向功能性研究
- maven手动下载缺失jar包
- 占位
- MySQL基础(2)——检索、排序与过滤
- c++之类型安全
- JAVA的基本类型及自动转换问题
- 斐波那契数列