编程之美读书笔记---计算字符串的相似度
来源:互联网 发布:java怎么做界面设计 编辑:程序博客网 时间:2024/05/22 10:51
使用递归实现,但是计算了重复的子问题,所以采用记忆化方法,将子问题的解保存在一个数组里。
#include <iostream>#include <string>#include <algorithm>#include <cstring>using namespace std;int ans[100][100][100][100];int mmin(int a,int b,int c){a=a<b?a:b;a=a<c?a:c;return a;}int caldis(string a,int pabegin,int paend,string b,int pbbegin,int pbend){if(pabegin>paend){if(pbbegin>pbend)return 0;else return ans[pabegin][paend][pbbegin][pbend]=pbend-pbbegin+1;}if(pbbegin>pbend){if(pabegin>paend)return 0;else return ans[pabegin][paend][pbbegin][pbend]=paend-pabegin+1;}if(a[pabegin]==b[pbbegin]){if(ans[pabegin+1][paend][pbbegin+1][pbend]!=-1)return ans[pabegin+1][paend][pbbegin+1][pbend];else return ans[pabegin+1][paend][pbbegin+1][pbend]=caldis(a,pabegin+1,paend,b,pbbegin+1,pbend);}else {int t1;if(ans[pabegin][paend][pbbegin+1][pbend]!=-1)t1=ans[pabegin][paend][pbbegin+1][pbend];else t1=caldis(a,pabegin,paend,b,pbbegin+1,pbend);int t2;if(ans[pabegin+1][paend][pbbegin][pbend]!=-1)t2=ans[pabegin+1][paend][pbbegin][pbend];else t2=caldis(a,pabegin+1,paend,b,pbbegin,pbend);int t3;if(ans[pabegin+1][paend][pbbegin+1][pbend]!=-1)t3=ans[pabegin+1][paend][pbbegin+1][pbend];else t3=caldis(a,pabegin+1,paend,b,pbbegin+1,pbend);return mmin(t1,t2,t3)+1;}}int main(){string s1="xabfa",s2="xafadfa";int len1=s1.size(),len2=s2.size();memset(ans,-1,sizeof(ans));cout<<caldis(s1,0,len1-1,s2,0,len2-1)<<endl;return 0;}
- 《编程之美》读书笔记: 3.3 计算字符串的相似度
- 编程之美读书笔记---计算字符串的相似度
- 编程之美读书笔记-计算字符串的相似度
- 读书笔记之编程之美 - 3.3 计算字符串的相似度
- 编程之美读书笔记_3.3_计算字符串的相似度
- 《编程之美》读书笔记: 3.3 计算字符串的相似度(java实现)
- 编程之美读书笔记3.3— 计算字符串的相似度
- 编程之美 - 计算字符串相似度
- 编程之美之计算字符串的相似度
- 编程之美系列之计算字符串的相似度
- 编程之美——计算字符串的相似度
- 计算字符串的相似度(编程之美)
- 计算字符串的相似度(编程之美)
- 计算字符串的相似度--编程之美3.3
- 编程之美---计算字符串的相似度
- 计算字符串的相似度--编程之美3.3
- 编程之美3.3, 计算字符串的相似度
- 《编程之美》 3.3 计算字符串的相似度
- oracle修改密码
- Ubuntu关闭按钮移到右上角
- 图解数据结构(6)——树及树的遍历
- ACrush楼天成回忆录
- 条件变量、pthread_cond_init
- 编程之美读书笔记---计算字符串的相似度
- Host USB与USB Device
- HTML5 SVG
- 关于java web中的解码与编码
- IOS之同步请求、异步请求、GET请求、POST请求
- 20 个简化开发任务的 JavaScript 库
- c语言复习课程1(唐老师答疑课)
- Linux下 利用find命令删除所有.svn目录
- 系统集成项目管理之信息系统服务管理