欢迎来到天天文库
浏览记录
ID:14780076
大小:35.00 KB
页数:5页
时间:2018-07-30
《算法分析实验题目》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、算法设计与分析基础(21周前交,要求上交源代码,需要实验报告,语言不限)编程实现:1、计算两个不全为0的非负整数m和n的最大公约数(1)用欧几里德算法实现;(2)用连续整数检测算法实现;(3)用质因数分解算法实现;2、Horspool算法(Page195)3、BM算法(Page197)最大公约数定义:两个不全为0的非负整数m和n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大正整数。-------------------------------------------
2、-------------------------------------一、欧几里得算法第一步:如果n=0,返回m的值作为结果,同时过程结束;否则进入第二步第二步:m除以n,将余数赋给r第三步:将n的值赋给m,将r的值赋给n,返回第一步算法Euclid(m,n)//使用欧几里德算法计算gcd(m,n)//输入:两个不全为0的非负整数m,n//输出:m,n的最大公约数ifn=0returnnwhilen!=0dor←mmodnm←nn←rreturnn----------------------
3、----------------------------------------------------------二、连续整数检测法第一步:将min{m,n}的值赋给t第二步:m除以t,如果余数为0,进入第三步;否则进入第四步第三步:n除以t,如果余数为0,返回t的值作为结果;否则进入第四步第四步:把t的值减1。返回第二步算法://使用连续整数检测法计算gcd(m,n)//输入:两个不全为0的非负整数m,n//输出:m,n的最大公约数ifn=0returnnt=min{m,n}whilet>0
4、doif(mmodt)==0if(nmodt)==0returntelset=t-1elset=t-1returnt--------------------------------------------------------------------------------三、中学中计算gcd(m,n)的过程第一步:找到m的所有质因数第二步:找到n的所有质因数第三步:从第一步和第二步求得的质因数分解式中找出所有的公因数(如果p是一个公因数,而且在m和n的质因数分解式分别出现过pm和pn次,那么
5、应该将p重复min{pm,pn}次)第四步:将第三步中找到的质因数相乘,其结果作为给定数字的最大公约数Horspool算法这个算法是由R.NigelHorspool在1980年提出的。其滑动思想非常简单,就是从后往前匹配模式串,若在某一位失去匹配,此位对应的文本串字符为c,那就将模式串向右滑动,使模式串之前最近的c对准这一位,再从新从后往前检查。那如果之前找不到c怎么办?那好极了,直接将整个模式串滑过这一位。例如:文本串:abdabaca模式串:baca倒数第2位失去匹配,模式串之前又没有d,那
6、模式串就可以整个滑过,变成这样:文本串:abdabaca模式串:baca发现倒数第1位就失去匹配,之前1位有c,那就向右滑动1位:文本串:abdabaca模式串:baca实现代码:#include#include#include#includeusingnamespacestd;intHorspool_match(conststring&S,conststring&M,intpos);intmain(){stringS="ab
7、cdefghabcdefghhiijiklmabc";stringT="hhiij";intpos=Horspool_match(S,T,3);cout<<""<8、f((S_len-pos)-1)&&(Si9、10、(Mi>-1));Mi=M_len-1;Si+=M_len-1;}}if(Si
8、f((S_len-pos)-1)&&(Si9、10、(Mi>-1));Mi=M_len-1;Si+=M_len-1;}}if(Si
9、
10、(Mi>-1));Mi=M_len-1;Si+=M_len-1;}}if(Si
此文档下载收益归作者所有