编辑距离
来源:互联网 发布:淘宝秒杀抢拍器怎么买 编辑:程序博客网 时间:2024/05/29 05:08
一、
状态转移方程还是比较难推出,这是DP问题的共性。没有更好的更好的办法,只能通过积累模型来提升判断能力。
二、
根据insert,delete,replace,三种情况分别写出递推式:
Insert: d[i][j] .= d[i-1][j]+1;
Delete: d[i][j] .= d[i][j-1] +1;
Replace: d[i][j] .= d[i-1[][j-1] + a[i]==b[j]?0:1;
d[i][j] = max(Insert,Delete,Replace)
三、
通过二维数组记录中间结果,并不能保证不超时。涉及到字符串的操作会导致复杂度上升为O(m*n*(m+n)),所以想办法避免字符串操作,例如substr(),通过参数方式规避substr操作是完全可以行的。
四、
实现类
class Solution {public: int rMin(string &w1,string &w2,vector< vector<int> > &dis,int m,int n){if(!m) return n; if(!n) return m; if(dis[m-1][n-1]!=-1) return dis[m-1][n-1];int a,b,c;a=w1[m-1]==w2[n-1]?rMin(w1,w2,dis,m-1,n-1):(rMin(w1,w2,dis,m-1,n-1)+1);b=rMin(w1,w2,dis,m-1,n)+1;c=rMin(w1,w2,dis,m,n-1)+1;return dis[m-1][n-1]=min(min(a,b),c);}int minDistance(string word1, string word2) { int m = word1.size(); int n = word2.size(); if(!m||!n) return max(m,n); vector< vector<int> > dis(m,vector<int>(n,-1)); return rMin(word1,word2,dis,m,n);}};五、
测试
#include <iostream>#include <string>#include <algorithm>#include <vector>using namespace std;int rMin(string &w1,string &w2,vector< vector<int> > &dis,int m,int n){if(!m) return n; if(!n) return m; if(dis[m-1][n-1]!=-1) return dis[m-1][n-1];int a,b,c;a=w1[m-1]==w2[n-1]?rMin(w1,w2,dis,m-1,n-1):(rMin(w1,w2,dis,m-1,n-1)+1);b=rMin(w1,w2,dis,m-1,n)+1;c=rMin(w1,w2,dis,m,n-1)+1;return dis[m-1][n-1]=min(min(a,b),c);}int minDistance(string word1, string word2) { int m = word1.size(); int n = word2.size(); if(!m||!n) return max(m,n); vector< vector<int> > dis(m,vector<int>(n,-1)); return rMin(word1,word2,dis,m,n);}int main() {// your code goes herestring w1,w2;cin>>w1>>w2;cout<<minDistance(w1,w2)<<endl;return 0;}
0 0
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- 编辑距离
- SharePoint Search之(八) 搜索中心站点
- Android Notification通知简单使用DEMO
- 控制界面切换的动画效果
- poj1240 Pre-Post-erous!
- Sicily 1641 Binary Searchable
- 编辑距离
- FPGA图像画质之显示器和视频头的画面问题
- 使用JS解决织梦dedecms多标签嵌套的问题
- ARC与非ARC在一个项目中同时使用
- 手机一秒震动一次(ZWB)
- android从相册或者照相获取图片,并且进行裁切
- 定风波·莫听穿林打叶声
- spring-mvc 拦截器 /** 的含义
- UI基础-基础控件-0324-通过代码创建按钮