KMP实验报告.docx

上传人:太** 文档编号:96997642 上传时间:2024-04-09 格式:DOCX 页数:4 大小:14.22KB
返回 下载 相关 举报
KMP实验报告.docx_第1页
第1页 / 共4页
KMP实验报告.docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《KMP实验报告.docx》由会员分享,可在线阅读,更多相关《KMP实验报告.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验报告题目:编制字符串匹配的KMP算法班级:理科实验四班 姓名:木三学号:* 完成日期:2016.4.17 一、需求分析1 .字符串匹配试求子串位置的定位函数,普通的字符串匹配函数时间复杂度较大 达到了 0 (m*n),而KMP算法则可以将时间复杂度简化到0 (m+n)。2 .本演示程序中,字符串的元素为除换行、退格等字符外的其他字符,字符串长 度CMAXSIZE,字符串的输入的形式为string。储存长度,从stringl开始存 储字符,并以0做结束标志,字符串中字符顺序不限,且允许出现重复字符, 不能出现非法字符。输入两个字符串后,输入一个整形数pos, pos=0数据关系:Rl= |a

2、i-l,ai i=l,2,. . ,n)基本操作:GetString (SString &S)初始条件:存在串的指针。操作结果:生成一个由键盘键入的字符串S。strlen (SString S)初始条件:串S存在。操作结果:返回S的元素个数,称为串的长度。Index(SString S,SString T,int pos)初始条件:串S和T存在,T是非空串,l=posGetString () -strlenth () -index_KMP-get_next()三、调试分析1.在GetStringO中开始用了 gets(S), S0没有用来记录字符串的长度,导致 在后续的程序中运算出错。2. n

3、ext函数在某些情况下存在缺陷。例如模式4aaaaa在和主串aaabaaaab 匹配时,当i=4、产4,时不匹配,需要进行多余的三次比较,实际上,因为模 式中第1、2、3、个字符和第4个字符都相等,因此不再需要和主串中第四个字 符进行比较,而可以将模式一气向右滑动4个字符的位置直接进行;5、时 的字符比较。这就是说,若按上述定义得到nextj=k,而模式中pj二pk,则当 主串中字符si和pj不比较不等时,不需要在和pk进行比较,而直接和pnextk 进行比较,即此时的next比应该和next k相同。由此得到修正算法:void get_nextval (SString T,int nextv

4、al)四、测试结果1. S=abababab?T二abapos=l :1;2. S=ababababT=abapos=6 :0;五、附录源程序文件清单:#define MAXSTRLEN 255#include#include#includeint nextMAXSTRLEN+1,nextvalMAXSTRLEN+1;typedef char SStringMAXSTRLEN+1;int Index_KMP(SString S,SString T,int pos)int i,j=l;i=pos;while(i=S0&jTO)return i-T0;else return 0;)void get

5、_next(SString T,int next)int i=l,j;next l=0;j=0;while(iT0)(if(j=O|Ti=Tj)+i;+j;next i=j;)else j=nextj;)void get_nextval(SString T, int nextval)int i=l,j=0;nextvall=0;while(iT0)(if(j=O|Ti=Tj)(i+;j+;if (Ti!=Tj)nextvali=j;else nextvali=nextvalj;else j=nextvalj; void GetString(SString &S)(gets(S+l);S0=strlen (S+l);int main ()(SString S,T;int pos;GetString(S);GetString(T);get_next (T,next);scanf(%d”,&pos);printf(n%dn,Index_KMP (S,T,pos);return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁