算法设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析实验报告
1、大整数乘法实验
2、Boyer-Moore算法实验
学生学院
专业班级
学号
学生姓名
指导教师
2012 年11 月12 日
一、实验名称:大整数的乘法
二、实验目的及要求
学习分治的思想, 掌握实现大整数相乘的算法,以提高算法的效率。
三、实验环境
Vc++。
四、实验内容
从键盘上输入两个大整数,实现两个大整数相乘,并输出结果。
例如:在键盘上输入两个数a(此数为我的学号后四位6161),b(自定义)。
a=6161;
b=369852147;
五、算法描述及实验步骤
(1)定义三个数组a[100],b[100],c[199];
(2)用数组a来存放大整数a,数组b来存放大整数b,数组c 来存放数组a和数组b的每一位乘积;
六、源程序清单
#include
#define A 100
#define B 100
int getnumber(char a[],int b[]){
int i=0;
while(a[i]!='\0'){
b[i]=a[i]-48;
i++;
}
return i;
}
void make(int a[],int aa,int b[],int bb,int c[]){ int i,j;
for(i=0;i if(a[i]==0) continue; for(j=0;j c[i+j]+=a[i]*b[j]; } for(i=aa+bb-2;i>0;i--){ c[i-1]+=c[i]/10; c[i]=c[i]%10; } printf("\nc="); for(i=0;i printf("%d",c[i]); } main(){ int aa,bb,i,a[A]={0},b[B]={0},c[A+B]={0}; char a1[A],b1[B]; printf("请输入一个数a:"); gets(a1); aa=getnumber(a1,a); printf("a="); for(i=0;i printf("%d",a[i]); printf("\n请输入另一个数b:"); gets(b1); bb=getnumber(b1,b); printf("b="); for(i=0;i printf("%d",b[i]); make(a,aa,b,bb,c); printf("\n"); } 七、运行结果 七、总结 本程序的的时间复杂度太大O(aa*bb),但是解决了大整数相乘硬件无法完成的问题。 实验二 一、实验名称:Boyer moore 算法实现模式匹配 二、实验目的及要求 学习Boyer moore 算法思想; 掌握使用Boyer moore算法实现模式匹配 三、实验环境 Vc++。 四、实验内容 使用Boyer-Mooer算法在DNA序列中查找基因的问题。一个DNA序列是由来自字母表{A,C,G,T}的文本来表示的,而基因或者基因片段就是模式。 a.为第10对染色体中的下列基因片段构造一个移动表:TCCTATTCTT b.用Boyer-Mooer算法,在下面的DNA序列中为上面这个模式定位:TTATAGATCTCGTATTCTTTTATAGATCTCCTATTCTT 五、算法描述及实验步骤 六、源代码清单 #include #include #include int table[100]; int suff[100]; int max(int n, int m) { if(n >= m) return n; else return m; } int * movetable(char p[]) { int m,i; char c; m = strlen(p); //匹配模式长度m for(c='a'; c<='z'; c++) table[c-97]=m; for(i=0; i<=m-2; i++) table[p[i]-97]=m-1-i; table[' '-6]=m; return table; } int * suffixtable(char p[]) { int n, k, i,j,m; n = strlen(p); k=1; i=n-2; m=n-1; while(i>=0){ if(p[i]==p[n-1]) {suff[k]=n-1-i;break;} i--; } for(k=2; k for(i=k; i>0; i--){ j=i; m=n-1; while(j>0 && p[j-1]==p[n-1+m-5]){ j--;