ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:24.04KB ,
资源ID:4932359      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4932359.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(精品文档算法设计与分析实验报告格式精选word文档 30页.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

精品文档算法设计与分析实验报告格式精选word文档 30页.docx

1、精品文档算法设计与分析实验报告格式精选word文档 30页本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!= 本文为word格式,下载后可方便编辑和修改! = 算法设计与分析实验报告格式算法设计与分析实验报告一实验名称 统计数字问题 评分 实验日期 年月 日指导教师 刘长松 姓名 刘飞初 专业班级计算机0901 学号 10一.实验要求1、掌握算法的计算复杂性概念。2、掌握算法渐近复杂性的数学表述。3、掌握用C+语言描述算法的方法。4实现具体的编程与上机实验,验证算法的时间复杂性函数。二.实验内容统计数字问题1、问题描述一本书的页码从自然数1 开始顺序编

2、码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1, 2,9。 2、编程任务给定表示书的总页码的10 进制整数n (1n109) 。编程计算书的全部页码中分别用到多少次数字0,1,2,9。三.程序算法将页码数除以10,得到一个整数商和余数,商就代表页码数减余数外有多少个19作为个位数,余数代表有1余数本身这么多个数作为剩余的个位数,此外,商还代表1商本身这些数出现了10次,余数还代表剩余的没有计算的商的大小的数的个数。把这些结果统计起

3、来即可。 四.程序代码#includeint s10; /记录09出现的次数int a10; /ai记录n位数的规律void sum(int n,int l,int m)if(m=1) int zero=1;for(int i=0;i=l;i+) /去除前缀0 s0-=zero;zero*=10; if(n10)for(int i=0;i=n;i+)si+=1;return;/位数为1位时,出现次数加1/位数大于1时的出现次数for(int t=1;t=l;t+)/计算规律f(n)=n*10(n-1) m=1;int i; for(i=1;it;i+) m=m*10; at=t*m; int

4、zero=1;for(int i=0;il;i+)zero*= 10; /求出输入数为10的n次方int yushu=n%zero; /求出最高位以后的数int zuigao=n/zero; /求出最高位zuigaofor(i=0;izuigao;i+)si+=zero; /求出0zuigao-1位的数的出现次数for(i=0;iyushu)i+;s0+=i*(yushu+1);/补回因作模操作丢失的0szuigao+=(yushu+1);/补回最高位丢失的数目sum(yushu,l-i-1,m+1);/处理余位数 void main() int i,m,n,N,l;coutN; cout=1

5、0;i+)n/=10; /求出N的位数n-1l=i;sum(N,l,1);for(i=0; i10;i+)cout 数字i出现了:si次n;五.程序调试中的问题调试过程中总是有这样那样的问题,通过一步步的修改,最终得以实现。六.实验结果算法设计与分析实验报告二实验名称分治法实现归并排序算法评分 实验日期 年月 日指导教师 刘长松姓名 刘飞初 专业班级 计算机0901 学号10一.实验要求1.了解用分治法求解的问题:当要求解一个输入规模为n,且n的取值相当大的问题时, 如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1kn,而且子问题与原问题性质相同,原问题的解可由这些子问

6、题的解合并得出。那末,对于这类问题分治法是十分有效的。 2.掌握分治法的一般控制流程。DanC(p,q)global n,A1:n; integer m,p,q; / 1?p?q?nif Small(p,q) then return G(p,q);else m=Divide(p,q); / p?mqreturn Combine(DanC(p,m),DanC(m+1,q);endifend DanC3实现典型的分治算法的编程与上机实验,验证算法的时间复杂性函数。二.实验内容1.编程实现归并排序算法,程序中加入比较次数的计数功能,输出排序结果和比较次数。2.输入10组相同的数据,验证排序结果和完成

7、排序的比较次数。3.与复杂性函数所计算的比较次数比较。4.用表格列出比较结果。5.给出文字分析。三.程序算法1. 归并排序算法procedure MERGESORT(low,high)/A(low;high)是一个全程数组,它含有high-low+10个待排序的元素/integer low,high;if lowmid thenfor kj to high do /处理剩余的元素/B(i) A(k);ii+1repeatelse for kh to mid doB(i) A(k);ii+1repeatendif将已归并的集合复制到Aend MERGE2. 快速排序算法QuickSort(p,q

8、)/将数组A1:n中的元素Ap, Ap+1, ? , Aq按不降次序排列,并假定An+1是一个确定的、且大于A1:n中所有的数。/int p,q; global n, A1:n;if pq thenj=Partition(p, q+1); / 划分后j成为划分元素的位置 QuickSort(p,j-1);QuickSort(j+1,q);endifend QuickSortprocedure PARTITION(m,p)/退出过程时,p带着划分元素所在的下标位置。/integer m,p,i;global A(m:p-1)vA(m);im /A(m)是划分元素/looploop ii+1 un

9、til A(i)v repeat /i由左向右移/loop pp-1 until A(p)v repeat /p由右向左移/if ipthen call INTERCHANGE(A(i),A(p) /A(i)和A(p)换位/ else exitendifrepeatA(m) A(p);A(p) v /划分元素在位置p/End PARTITION四.程序代码归并排序#include#include#include#include#define M 11typedef int KeyType;typedef int ElemType;struct recKeyType key;ElemType d

10、ata;typedef rec sqlistM;class guibingpublic:guibing(sqlist b) for(int i=0;iM;i+) ri=bi; void xuanze(sqlist b,int m,int n) void merge(int l,int m,int h,sqlist r2) xuanze(r,l,m); xuanze(r,m,h); output(r,M); int i,j,k; k=i=l; for(j=m;im&jh;k+) if(ri.key=rj.key) else r2k=ri; i+; int i,j,k; for(i=m;in-1;

11、i+) k=i; for(j=i;jbj.key) k=j; if(k!=i) rec temp=bk; bk=bi; bi=temp; for(int i=0;in;i+) coutsetw(4)ri.key; coutendl; j+; output(r2,M); while(jh) while(i=m) output(r2,M); r2k=ri; i+; k+; r2k=rj; j+; k+;private:sqlist r;void main()coutguibingfa1运行结果:n; sqlist a,b; int i,j=0,k=M/2,n=M; srand(time(0); f

12、or(i=0;iM;i+) guibing gx(a); cout排序前数组:n; gx.output(a,M); cout数组排序过程演示:n; gx.merge(j,k,n,b); cout排序后数组:n; ai.key=rand()%80;bi.key=0; cin.get();快速排序#include #include#include#include#define MAXI 10typedef int KeyType; typedef int ElemType; struct recKeyType key;ElemType data;typedef rec sqlistMAXI; cl

13、ass kuaisupublic:kuaisu(sqlist a,int m):n(m) void quicksort(int s,int t) int part(int s,int t) int i,j; rec p; i=s;j=t;p=bs; int i; if(st) else return; i=part(s,t); quicksort(s,i-1); quicksort(i+1,t); for(int i=0;in;i+) bi=ai; while(ij) bi=p; output(); return i; while(i=p.key)j-; bi=bj; while(ij&bi.

14、key=p.key)i+; bj=bi;void output()private:sqlist b;int n;void main()coutkuaisu1.cpp运行结果:n;sqlist a1;int i,n=MAXI,low=0,high=9;srand(time(0);for(i=0;in;i+)a1i.key=rand()%80;kuaisu px(a1,n);cout数组排序过程演示:n;px.quicksort(low,high);cout排序后数组:n;px.output();cin.get(); for(int i=0;in;i+) coutsetw(4)bi.key; co

15、utendl;五.程序调试中的问题1. 归并排序2. 快速排序算法设计与分析实验报告三实验名称 动态规划算法实现多段图的最短路径问题 评分 实验日期 年月 日指导教师 刘长松 姓名 刘飞初 专业班级 计算机0901 学号10一.实验要求1. 理解最优子结构的问题。有一类问题的活动过程可以分成若干个阶段,而且在任一阶段后的行为依赖于该阶段的状态,与该阶段之前的过程如何达到这种状态的方式无关。这类问题的解决是多阶段的决策过程。在50年代,贝尔曼(Richard Bellman)等人提出了解决这类问题的“最优化原理”,从而创建了最优化问题的一种新的算法设计方法动态规划。 对于一个多阶段过程问题,是否

16、可以分段实现最优决策,依赖于该问题是否有最优子结构性质,能否采用动态规划的方法,还要看该问题的子问题是否具有重叠性质。 最优子结构性质:原问题的最优解包含了其子问题的最优解。 子问题重叠性质:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。问题的最优子结构性质和子问题重叠性质是采用动态规划算法的两个基本要素。2.理解分段决策Bellman方程。每一点最优都是上一点最优加上这段长度。即当前最优只与上一步有关。 ?us?0, ?u?minu?w.iij?ji?j ?Us 初始值,uj第j段的最优值。3.一般方法1) 找出最优解的性质,并刻画其结构特征;2) 递归地定义最优值(写出动态规划

17、方程);3) 以自底向上的方式计算出最优值;4) 根据计算最优值时得到的信息,构造一个最优解。步骤1-3是动态规划算法的基本步骤。在只需要求出最优值的情形,步骤4可以省略,步骤3中记录的信息也较少;若需要求出问题的一个最优解,则必须执行步骤4,步骤3中记录的信息必须足够多以便构造最优解。 二.实验内容1.编程实现多段图的最短路径问题的动态规划算法。2.图的数据结构采用邻接表。3.要求用文件装入5个多段图数据,编写从文件到邻接表的函数。4.验证算法的时间复杂性。三.程序算法多段图算法procedure FGRAPH(E,k,n,P)/输入是按段的顺序给结点编号的,有n个结点的k段图。E是边集,c

18、(i,j)是边的成本。P(1:k)是最小成本路径。/real COST(n),integerD(n一1),P(k),r,j,k,nCOST(n) 0for jn-1to 1by1do /计算COST(j)/设r是一个这样的结点,(j,r)?E且使c(j,r)+COST(r)取最小值 COST(j)c(j,r)+COST(r)D(j)rrepeat /向前对j-1进行决策/P(1)1;P(k)n;for j2 to k-1 do /找路径上的第j个节点/P(j)D ( P(j-1) )repeatend FGRAPH四.程序代码多段图问题#include#include#include#defi

19、ne MAX_VERTEX_NUM 50typedef struct ArcNodeint adjvex; /该弧所指向的顶点的位置int value; /该结点与邻接结点间的代价struct ArcNode *nextarc; /指向下一条弧的指针ArcNode, *node;typedef struct VNodeint data; /顶点信息ArcNode *firstArc; /指向第一条依附该顶点的弧的指针 VNode, AdjListMAX_VERTEX_NUM;typedef struct GraphAdjList vertices;int vexnum,arcnum; /图的当

20、前顶点数和弧数 *ALGraph;int build_adList(ALGraph G,int n,int a) /建立邻接表int v, m, i, t, h;node p, q;if(n vexnum = n; /图的顶点数if(a arcnum = a; /图的弧数for(m = 0; m n; m+)for(m = 1; m adjvex = h; p-value = v; p-nextarc = NULL; while(G-verticesi.data != t) i+; /转到下一个结点 if(!G-verticesi.firstArc) /终点 G-verticesi.first

21、Arc = p; else /若当前结点有后继节点则后移 for(q = G-verticesi.firstArc; q-nextarc; q = q-nextarc); q-nextarc = p; /新开辟结点 G-verticesm.data = m; G-verticesm.firstArc = NULL; void print_Graph(ALGraph G) /打印邻接表ArcNode *p=(ArcNode *)malloc(sizeof(ArcNode);int i;for(i = 1; i vexnum; i+)void fgraph(ALGraph G ,int k,int

22、 n) /多段图ALGraph G,n为结点数,k为图的段数/输入是按段的顺序给结点编号int cost100;int d100;int path100;int j, r, i, min, w, value;node p;costn = 0;for(j = n - 1; j = 1; j-) /向前处理结点p = G-verticesj.firstArc; min = p-value+costp-adjvex; /初始化路径最小代价 r = p-adjvex; value = p-value; while(p != NULL) /r是一个的这样的结点,权值c(j,r)+costr取最小值 if

23、(p-value + costp-adjvex) value + costp-adjvex; /p-value=c(j,r) p = G-verticesi.firstArc; printf(%d,i); while(p) printf(n); printf(-%d,%d,p-adjvex,p-value);/第i个结点的邻接结点信息 p = p-nextarc; value = p-value; p = p-nextarc; costj = value + costr; /当前节点的代价值 dj = r; /决策阶段,各结点到终点最小代价路径上前方顶点的编号path1 = 1; pathk

24、= n;for(i = 2; i = k - 1; i+) /找出最小代价路径上的结点pathi = dpathi - 1;printf(最小成本为:%dn,cost1);printf(最小成本路径为: );for(w = 1; w , pathw);五.实验结果多段图问题算法设计与分析实验报告四实验名称 贪心算法实现背包问题 评分 实验日期 年月 日指导教师 刘长松姓名 刘飞初 专业班级 计算机0901 学号 10一.实验要求1. 优化问题有n个输入,而它的解就由这n个输入满足某些事先给定的约束条件的某个子集组 成,而把满足约束条件的子集称为该问题的可行解。可行解一般来说是不唯一的。那些使目标函数取极值(极大或极小)的可行解,称为最优解。 2.贪心法求优化问题算法思想:在贪心算法中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。作出贪心决策的依据称为贪心准则(greedy criterion)。 3.一般方法1)根据题意,选取一种量度标准。2)按这种量度标准对这n个输入排序3)依次选

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1