南邮 OJ 1224 编辑距离问题
来源:互联网 发布:java获取客户端的ip 编辑:程序博客网 时间:2024/06/06 03:31
编辑距离问题
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 174 测试通过 : 42
总提交 : 174 测试通过 : 42
比赛描述
设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括
(1)删除一个字符;
(2)插入一个字符;
(3)将一个字符改为另一个字符。
将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的2个字符串A和B,计算出它们的编辑距离d(A,B)。
对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。输入
输入数的第一行是字符串A,文件的第二行是字符串B。
输出
输出编辑距离d(A,B)的第1行中。
样例输入
fxpimu
xwrs
样例输出
5
提示
undefined
题目来源
算法设计与实验题解
/*dp[i][j]表示str1的前i个字符和str2的前j个字符之间的编辑距离1.d(s1,"")=d("",s1)=s1.length();d(“ch1”,”ch2”) = (ch1==ch2?0:1);2.d(s1+ch1,s2+ch2) = min( d(s1,s2)+(ch1==ch2 ?0:1),d(s1+ch1,s2),d(s1,s2+ch2) );dp[i][j] = min_val(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+cost);dp[i-1][j]+1:删除str1[i];dp[i][j-1]+1:在str1[i]后面插入str2[j]; dp[i-1][j-1]+cost:将str1[i]改为str2[j].*/#include<iostream>#include<string>using namespace std;int min_val(const int a,const int b,const int c){int min = a<b?a:b;min = min<c?min:c;return min;}int edit_distance(const string &str1,const string &str2){int m=(int)str1.length(),n=(int)str2.length(),i,j,cost;if(m==0){return n;}if(n==0){return m;}int **dp=(int **)malloc((m+1)*sizeof(int*));for(i=0;i<=m;++i){dp[i]=(int *)malloc((n+1)*sizeof(int));}for(i=0;i<=m;++i){dp[i][0] = i;}for(j=1;j<=n;++j){dp[0][j] = j;}for(i=1;i<=m;++i){for(j=1;j<=n;++j){cost = (str1[i-1]==str2[j-1]?0:1);dp[i][j] = min_val(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+cost);}}cost = dp[m][n];for(i=0;i<=m;++i){delete dp[i];}delete dp;return cost;}int main(){string str1,str2;cin>>str1>>str2;cout<<edit_distance(str1,str2)<<endl;}
0 0
- 南邮 OJ 1224 编辑距离问题
- 哈理工OJ 1284 编辑距离(DP问题)
- 编辑距离问题
- 【dp】编辑距离问题
- 王晓东 编辑距离问题
- 编辑距离问题 dp
- 编辑距离问题
- 王晓东 编辑距离问题
- 编辑距离问题
- 编辑距离问题
- 编辑距离问题(1)
- 编辑距离问题
- DP_编辑距离问题
- 编辑距离问题(1)
- 编辑距离问题
- 编辑距离问题
- 编辑距离问题
- 编辑距离问题
- [备注]HDOJ题目分类
- UDP并发服务器模型 一
- 启动apk的常用方法
- Eclipse web工程导入Myeclipse中无法部署到tomcat解决方法
- 设置后台传送json的response.setContentType()格式
- 南邮 OJ 1224 编辑距离问题
- Activity的标题
- 黑马程序员_Java基础:多功能小窗口,swing,io,net综合应用
- html中利用table进行布局
- 关于String内存分配的深入探讨
- MODBUS通讯协议及编程【一】
- [知其然不知其所以然-3] 为什么在高负载下cpu的温度没有显著提升
- box-sizing
- DateTime.Now.ToString()总结