算法分析实验题目.doc_第1页
算法分析实验题目.doc_第2页
算法分析实验题目.doc_第3页
算法分析实验题目.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、算法设计与分析基础(21周前交,要求上交源代码,需要实验报告,语言不限)编程实现:1、计算两个不全为0的非负整数m和n的最大公约数(1)用欧几里德算法实现;(2)用连续整数检测算法实现;(3)用质因数分解算法实现;2、Horspool算法(Page 195)3、BM算法(Page 197)最大公约数定义:两个不全为0的非负整数m和n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大正整数。- 一、欧几里得算法第一步:如果n=0,返回m的值作为结果,同时过程结束;否则进入第二步第二步:m除以n,将余数赋给r第三步:将n的值赋给m,将r的值赋给n,返回第一步算法 Euclid(m,n) /使用欧几里德算法计算gcd(m,n) /输入:两个不全为0的非负整数m,n /输出:m,n的最大公约数 if n=0 return n while n!=0 do rm mod n mn n r return n-二、连续整数检测法第一步:将minm,n的值赋给t第二步:m除以t,如果余数为0,进入第三步;否则进入第四步第三步:n除以t,如果余数为0,返回t的值作为结果;否则进入第四步第四步:把t的值减1。返回第二步算法: /使用连续整数检测法计算gcd(m,n) /输入:两个不全为0的非负整数m,n /输出:m,n的最大公约数 if n=0 return n t=minm,n while t0 do if (m mod t)=0 if (n mod t)=0 return t else t=t-1 else t=t-1 return t -三、中学中计算gcd(m,n)的过程第一步:找到m的所有质因数第二步:找到n的所有质因数第三步:从第一步和第二步求得的质因数分解式中找出所有的公因数(如果p是一个公因数,而且在m和n的质因数分解式分别出现过pm和pn次,那么应该将p重复minpm,pn次)第四步:将第三步中找到的质因数相乘,其结果作为给定数字的最大公约数Horspool算法这个算法是由R.Nigel Horspool在1980年提出的。其滑动思想非常简单,就是从后往前匹配模式串,若在某一位失去匹配,此位对应的文本串字符为c,那就将模式串向右滑动,使模式串之前最近的c对准这一位,再从新从后往前检查。那如果之前找不到c怎么办?那好极了,直接将整个模式串滑过这一位。例如:文本串:abdabaca模式串:baca倒数第2位失去匹配,模式串之前又没有d,那模式串就可以整个滑过,变成这样:文本串:abdabaca模式串: baca发现倒数第1位就失去匹配,之前1位有c,那就向右滑动1位:文本串:abdabaca模式串: baca实现代码:#include #include #include #include using namespace std;int Horspool_match(const string & S,const string & M,int pos);int main( ) string S=abcdefghabcdefghhiijiklmabc; string T=hhiij; int pos = Horspool_match(S,T,3); coutnposendl; system(pause); return 0;int Horspool_match(const string & S,const string & M,int pos) int S_len = S.size(); int M_len = M.size(); int Mi = M_len-1,Si= pos+Mi;/这里的串的第1个元素下标是0 if( (S_len-pos) -1) & (Si-1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论