中北大学软件学院算法实验报告(附截图)综述.docx

中北大学软件学院算法实验报告(附截图)综述.docx

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中北大学软件学院算法实验报告(附截图)综述

中北大学软件学院 实验报告 专 业:_________________________ 方 向:_________________________ 课程名称:_________________________ 班 级:_________________________ 学 号:_________________________ 姓 名:_________________________ 辅导教师:_________________________ 2016年3月制 成绩: 实验时间 2016年4月7日8时至10时 学时数 2 1.实验名称 实验一 串匹配程序设计 2.实验目的 (1) 熟练掌握串匹配的含义 (2) 掌握BF算法匹配的过程并编程实现 (3) 熟悉C++编译环境的基本操作 3.实验内容 给定两个字符串S和T,用BF算法,在主串S中查找字串T,输出结果,输出时要求有文字说明。请编写程序。 4.实验原理或流程图 基本思想:从主串S的第一个字符开始和模式T的第一个字符进行比较,若相等,则继续比较两者的后续字符;若不相等,则从主串S的第二个字符开始和模式T的第一个字符进行比较,重复上述过程,若T中的字符全部比较完毕,则说明本趟匹配成功;若最后一轮匹配的起始位置是n-m,则主串S中剩下的字符不足够匹配整个模式T,匹配失败。这个算法称为朴素的模式匹配算法,简称BF算法。 设串S长度为n,串T长度为m,在匹配成功的情况下,考虑最坏情况,即每趟不成功的匹配都发生在串T的最后一个字符。设匹配成功发生在si处,则在i-1趟不成功的匹配中共比较了(i-1)×m次,第i趟成功的匹配共比较了m次,所以总共比较了i×m次,因此平均比较次数是: 最坏情况是O(n×m)。 或者写书上P39页的伪代码描述。 5.实验过程或源代码 #include stdio.h int BF(char S[], char T[]){ int index = 0; //主串从下标0开始第一趟匹配 int i = 0, j = 0; //设置比较的起始下标 while ((S[i] != \0) (T[j] != \0)){ //模式匹配没有结束 printf(-从主串的第%d个位置开始与模式串进行匹配:(只输出回溯信息)\n,i); if (S[i] == T[j]){ //相同位置字符相同 i++; j++; //向后匹配 } else { //相同位置字符不同 printf(由于主串下标i为%d的字符%c和模式串下标j为%d的字符%c失配,i,S[i],j,T[j]); index++; i = index; j = 0; //i和j分别回溯 printf(所以i和j分别回溯到%d,%d重新开始匹配\n,i,j); } } if (T[j] == \0) return index + 1; //返回本趟匹配的开始位置(不是下标) else return 0; } int main(){ char S[100],T[100]; printf(请输入主串S(不超过100个字符):); scanf(%s,S); printf(请输入子串T(不超过100个字符):); scanf(%s,T); int index=BF(S,T); if(index == 0){ printf(模式匹配失败!); } else{ printf(模式匹配成功,子串%s在主串%s中首次匹配的位置是%d,T,S,index); } return 0; } 6.实验结论及心得 通过本次实验我理解了使用蛮力法解决问题的特点,蛮力法的设计思想是直接基于问题本身的描述来设计算法,即不采用任何方法来精简计算过程、运算次数或者设法简化问题本身。所以蛮力法设计的算法虽然简单易懂,但是效率却往往不是很令人满意,比如串的模式匹配问题中采用BF算法效率低下的主要原因就在于BF算法一旦主串和子串匹配失败就会产生回溯,如果能利用已有的匹配结果来减少回溯就可以提高效率,如KMP算法。 成绩: 实验时间 2016年4月7日8

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档