《算法分析与设计》实验指导书.doc
《《算法分析与设计》实验指导书.doc》由会员分享,可在线阅读,更多相关《《算法分析与设计》实验指导书.doc(20页珍藏版)》请在三一办公上搜索。
1、算法分析与设计实验指导书重庆邮电大学应用技术学院二八年四月算法分析与设计实验目的与要求一、实验目的算法分析与设计是信息与计算科学专业中一门重要的专业课程。当用计算机来解决实际问题时,就要涉及到对实际问题进行抽象模拟,也就是数学建模的过程,然后再设计相应的解决算法来解决实际问题,还要验证所设计的算法能够在可忍受或可达到的时间和空间内完成任务,因此算法的分析与设计就成了非常重要的环节。通过理论课的学习,我们知道要想设计一个算法必须从算法设计-算法确认-算法分析-编码-检查-调试-计时,七大步骤严格执行,所以读者可严格按照以上步骤进行,为以后进行算法研究的工作打下坚实的基础。二、实验要求1准备好上机
2、所需要的程序,并经人工检查后才能上机,以提高上机效率。对程序中自己有疑问的地方应作记号,以便在上机时给予注意。不得抄别人所编的程序。 2上机输入并调试所编的程序。 3上机结束后,提交实验报告,实验报告应包括以下内容:(1)题目;(2)算法的基本思想描述;(3)算法分析;(4)主要数据结构描述;(5)程序流程图; (6)程序清单;(7)运行的结果;(8)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。三、实验步骤1问题分析和任务的定义明确问题要求做什么,限制做什么(本步强调做什么,而不是怎么做)。对问题的描述应避开算法和所涉及的数据类型,而是所完成的任务做出明确的回
3、答。如输入数据的类型、值的范围以及输入的形式;输出数据的类型、值得范围及输出的形式;这异步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。2 数据类型和系统设计在设计这一步骤中分为逻辑设计和详细设计两步实现。逻辑设计指的是,为问题的描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统的功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据的封装,基本操作的规格说明尽可能的明确和具体。作为逻辑设计的结果。应写出每个
4、抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。详细设计的结果是对数据结构和基本操作的规格说明做出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类C语言写出函数形式的算法框架。3 编码实现和静态检查4 上机准备和上机调试5 总结和整理实习报告四、实验总结对实验中发现的问题,调试中的问题分析、解决方法,对算法的改进意见、建议、收获、体会等。实验报告参考规范:实验题目班级 姓名 学号 日期一、 需求分析1 程序的功能;2 输入输出的要求;3 测试数据。二、 概要设计1 本程序所用的抽象数据类型的定义;2 主程序的流程及
5、各程序模块之间的层次关系。三、 详细设计1 采用c语言定义相关的数据类型;2 写出各模块的伪码算法;3 画出函数的调用关系图。四、 调试分析1 调试中遇到的问题及对问题的解决方法;(编译错误与运行错误)2 算法的时间复杂度和空间复杂度。五、 运行结果1、 程序的使用说明2、 运行结果六、 实验完成后的思考1、 通过实验学到了什么、理解了什么2、 程序还有哪些不足或还有哪些需要完善的地方七、 源程序(带注释)实验一斐波那契数列实验目的1 掌握递归算法及其编程方法;实验课时总课时:2学时/1次实验内容1 利用递归方法或非递归方法实现求斐波那契数列第n项的值斐波那契数列描述如下:F(n)=f(n-1
6、)+f(n-2)F(1)=1F(2)=12 根据算法编制代码(C/C+语言编写,环境可选TC2或VC6)3 调试代码直至得出正确结果实验要求一、 输入一个值n,能够得出第n项的斐波那契数列值,当n值不是一个合法值时,给出提示(越详细越好)二、 程序能够循环输入值n三、 程序有退出键四、 下课前提交word文档,内容包括程序代码、运行结果截图(正确的和错误的n值)实验二实验目的1、 掌握基础算法分析和编程方法;实验课时总课时:2学时/1次实验内容1完成下列程序* *.*. *.*.*. *.*.*.*. *.*.*.*.*. *.*.*.*.*.*. *.*.*.*.*.*.*. *.*.*.*
7、.*.*.*.*.实验要求一、 下课前提交word文档,内容包括程序代码、运行结果截图实验三排序实验目的1.、掌握排序算法分析和编程方法;实验课时总课时:2学时/1次实验内容1完成下列程序,实现对数组的降序排序 #include void sort( ); int main() int array=45,56,76,234,1,34,23,2,3; /数字任意给出 sort( ); return 0; void sort( ) 实验要求一、方法不限,下课前提交word文档,内容包括程序代码、运行结果截图实验四螺旋数列实验目的1.、掌握算法分析和编程方法;实验课时总课时:2学时/1次实验内容如图
8、: 7 8 9 10 6 1 2 11 5 4 3 12 16 15 14 13 设“1”的坐标为(0,0) “7”的坐标为(1,1) 编写一个小程序,使程序做到输入坐标(X,Y)之后显示出相应的数字。 实验要求一、方法不限,下课前提交word文档,内容包括程序代码、运行结果截图实验五六七八实验目的1.、掌握算法分析和编程方法;实验课时总课时:2学时/1次,共8学时实验内容在下面的题目中任选40分的题作为实验五六七八的实验内容。1、(15分)要求:随机产生一个字符串,每次产生的字符串内容,长度都不同2、(15分)将整数转换成字符串:char* itoa(int); 例如itoa(-123)则返
9、回“-123”;3、(15分)设计函数 int atoi(char *s)。atoi()会扫描参数s字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再 遇到非数字或字符串结束时()才结束转换,并将结果返回。返回值 返回转换后的整型数。4、(15分)并编写一个函数实现一个整数到二进制数的转换,如输入6,输出110。5、(15分)写函数将一个字符串反转. 函数原型如下:char *reverse(char *str);6、(15分)写一个函数将一个链表逆序. 比如一个链表是这样的: 1-2-3-4-5 通过反转后成为5-4-3-2-17、(25分)题目描述:一个正整数有可能可以被
10、表示为 n 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出 “NONE” 。 例如,对于 15 ,其输出结果是: 1 2 3 4 5 4 5 6 7 8 对于
11、 16 ,其输出结果是: NONE 8、(25分)题目描述 为了在紧张的上班时间让员工们轻松些,百度休息室里放置着按摩椅、 CD 、高尔夫套装和 Wii 游戏机等休闲用品。其中最受欢迎的当然是游戏机。 wii 游戏机每个手柄需要使用两节电池(这两个电池可以是不同的品牌)。工程师们在玩游戏时。如果手柄没有电,他们都是将其中没电的电池拿走,并换上一个全新的电池,有电的必须继续使用。 例如,已知三种电池的使用时间分别为 3 小时、 5 小时和 8 小时。一开始,工程师使用 3 小时和 5 小时的电池。 3 小时后,换上一个 8 小时的,再过 2 小时后,手柄再次没电时,已经没有电池可用了。但如果一开
12、始就使用那个 8 小时电量的电池,可以玩满 8 个小时。 告诉你每个品牌电池的使用时间以及该品牌电池的个数,请计算工程师们玩游戏时间的最小值和最大值。输入格式输入第一行为一个正整数 n ,表示电池的种数。接下来 n 行,每行两个整数 L 和 F ,表示使用时间为 L 的电池有 F 个。输出格式输出仅一行,包含两个整数,分别表示工程师们的最短游戏时间和最长游戏时间(短的时间在前)。两个整数之间以空格隔开。 输入样例 3 3 2 5 2 8 2 输出样例 5 8 9、(25分)题目描述 “ 叉烧鸡翅膀,我呀最爱吃! ” 百度 spider 组的 “ 黑龙潭之行 ” 在烤着鸡翅,唱着星爷的经典时达到
13、高潮。大家在篝火旁围成一圈,开始玩 “ 数 7 ” 加强版游戏,规则如下: 规则 1 : 遇 7 的倍数或含 7 的数时 pass 。 规则 2 : 遇有包含相同数字的数时 pass 。注意相同数字不必相邻。例如 121 。 数错的惩罚很残酷 吞食烤全羊。为避免惩罚,百度工程师们需要你 史上最强程序员的帮助。百度工程师想知道: req1 x :符合规则 1 的第 x 个数是什么? req2 y :符合规则 2 的第 y 个数是什么? req12 z :同时符合规则 1 、 2 的第 z 个数是什么? query n :数 n 是规则 1 中的第几个数,是规则 2 中的第几个数? 输入格式 输入
14、的每一行为一个查询,由一个查询词和一个无符号整型数组成。共有四种查询,查询词分别为 req1 、 req2 、 req12 、 query (区分大小写)。 输出格式 前三种查询输出一个无符号整型的解。对于 “ query n ” 的查询,若 n 是规则中的数则输出相应的解,否则输出 -1 。 输入样例 req1 10 req2 10 req12 10 query 14 输出样例 11 10 12 -1 13 补充说明 输入数据共分五组,前四组中: 1=x=10000000,1=y1000000,1=z250000, 1=n24000000. ;第五组中的 y 可能达到 5000000 10、
15、(40分)饭团的烦恼“午餐饭团“是百度内部参与人数最多的民间组织。 同一个部门的,同一间大学的,同一年出生的,用同一种型号电脑的,员工们总是以各种理由,各种借口组织各种长久的,临时的饭团。 参加饭团,不仅可以以优惠的价格尝到更加丰富的菜式,还可以在吃饭的时候和同事们唠唠嗑,吹吹水,增进感情。 但是,随着百度的员工越来越多,各个饭团的管理随即变得烦杂。特别是为了照顾员工们越来越挑剔的胃口,饭团的点菜负责人背负的责任越来越大。现在,这个重担落在百度之星的肩上,因为,你们将要为所有的百度饭团设计一个自动点菜的算法。 饭团点菜的需求如下: 1 经济是我们要考虑的一个因素,既要充分利用百度员工的午餐补助
16、,又不能铺张浪费。因此,我们希望最后的人均费用越接近 12 元越好。 2 菜式丰富是我们要考虑的另一个因素。为简单起见,我们将各种菜肴的属性归结为荤菜,素菜,辛辣,清淡,并且每个菜只能点一次。 3 请紧记,百度饭团在各大餐馆享受 8 折优惠。 输入数据描述如下: 第一行包含三个整数 N , M , K ( 0N=16 , 0M=N , 0K=12 ),分别表示菜单上菜的数目,饭团需要点的菜的数目,就餐的人数。 紧接着 N 行,每行的格式如下: 菜名(长度不超过 20 个字符) 价格(原价,整数) 是否荤菜( 1 表示是, 0 表示否) 是否辛辣( 1 表示是, 0 表示否) 例: 水煮鱼 30
17、 1 1 紧接着是 a b c d 四个整数,分别表示需要点的荤菜,素菜,辛辣,清淡菜的数目。 输出数据: 对于每一测试数据,输出数据包含 M+1 行,前 M 行每行包含一个菜名(按菜名在原菜单的顺序排序)。第 M+1 行是人均消费,结果保留两位小数。 说明: 1 结果菜单的数目应该恰好为 M ,荤菜,素菜,辛辣,清淡菜的数目恰好为 a , b , c , d 。在满足这样的前提下,选择人均消费最接近 12 元的点菜方案。题目数据保证有且仅有一个解。 2 每组测试数据的结果用一个空行隔开。末尾不要有多余的空行。 输入样例 3 2 2 水煮鱼 30 1 1 口水鸡 18 1 1 清炖豆腐 12
18、0 0 1 1 1 1 输出样例 口水鸡 清炖豆腐 12.00 11、(40分)题目名称:蝈蝈式的记分 内容描述: 蝈蝈小朋友刚刚学会了 0-9 这十个数字 , 也跟爸爸妈妈来参加百度每周进行的羽毛球活动。但是他还没有球拍高,于是大人们叫他记录分数。聪明的蝈蝈发现只要记录连续得分的情况就可以了,比如用“ 3 2 4 ” 可以表示一方在这一局中连得三分后,输了两分,接着又连得到四分。可是,后来大人们发现蝈蝈只会用 0-9 这十个数字,所以当比赛选手得分超过 9 的时候,他会用一个 X 来表示 10 完成记分。但问题是,当记录为“ X 3 5 ” 的时候,蝈蝈自己也记不起来是一方连续得到十三分后,
19、再输五分;还是先赢十分输三分再赢五分。 因为百度内部就要开始进行羽毛球联赛了,要先摸清大家的实力才好分组比赛呢于是,大人们想知道以前每局的比分是怎样的,以及谁获得了胜利。要是遇到了根据比赛记录无法确认比赛进程的情况,也要输出相应的提示哦。 需要帮蝈蝈进一步说明的是,比赛是五局三胜的,每局先获得二十一分的为胜,但是胜方必须领先对手两分或以上,否则必须继续比赛直到一方超出对手两分为止,比分多的一方获胜。任何一方先获得三局的胜利后就获得胜利,比赛也相应的结束。而且蝈蝈保证是完整的无多余信息的记录了比赛。 输入数据: 以 point.in 为输入文件,文件中首行只有一个整数 M ,表示蝈蝈记录了多少场
20、比赛的分数。每场比赛用两行记录,第一行是一个整数 N(N=1000) 表示当前这个记录中有多少个字符,第二行就是具体的 N 个字符表示记录的分数。 输出数据: 相应的内容将输出到 point.out 文件中,对应每一个分数记录,输出相应的每局分数,每局分数都使用两个整数表示,表示两个选手的得分,中间用 : 分隔开;每组分数记录间使用一个空行分隔开。如果相应的比赛结果无法预测的时候,以” Unknown “一个单词独占一行表示。 ?输入和输出结果数据样例: Sample Input : 3 23 9 7 3 6 2 4 7 8 3 2 7 9 X 2 2 1 2 1 X 1 X 1 1 25 9
21、 3 8 5 4 8 3 9 8 4 X X X X 2 X X X X 2 8 4 9 2 4 43 7 7 7 7 7 3 4 5 6 7 6 5 4 2 1 3 5 7 9 7 5 3 1 3 0 9 9 3 9 3 2 1 1 1 5 1 5 1 5 1 5 5 1 Sample Output : 21:17 24:22 21:3 Unknown 21:14 20:22 21:23 21:16 21:9 12、(40分)变态的比赛规则 为了促进各部门员工的交流,百度 (baidu) 举办了一场全公司范围内的 拳皇友谊赛 ,负责组织这场比赛的是百度的超级 拳皇 迷 W.Z. W.Z 不想
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法分析与设计 算法 分析 设计 实验 指导书
链接地址:https://www.31ppt.com/p-4019280.html