算法分析与设计-课程设计报告

算法分析与设计-课程设计报告
算法分析与设计-课程设计报告

XXXX大学

算法设计与分析课程设计报告

院(系):

年级:

姓名:

专业:计算机科学与技术

研究方向:互联网与网络技术

指导教师:

X X X X 大学

目录

题目1 电梯调度 (1)

1.1 题目描述 (1)

1.2 算法文字描述 (1)

1.3 算法程序流程 (4)

1.4 算法的程序实现代码 (8)

题目2 切割木材 (10)

2.1题目描述 (10)

2.2算法文字描述 (10)

2.3算法程序流程 (11)

2.4算法的程序实现代码 (15)

题目3 设计题 (17)

3.1题目描述 (17)

3.2 输入要求 (17)

3.3输出要求 (17)

3.4样例输入 (17)

3.5样例输出 (17)

3.6测试样例输入 (17)

3.7测试样例输出 (18)

3.8算法实现的文字描述 (18)

3.9算法程序流程 (19)

3.10算法的程序实现代码 (20)

算法分析与设计课程总结 (23)

参考文献 (24)

题目1 电梯调度

1.1 题目描述

一栋高达31层的写字楼只有一部电梯,其中电梯每走一层需花费4秒,并且在每一层楼停靠的时间为10秒,乘客上下一楼需要20秒,在此求解最后一位乘客到达目的楼层的最短时间以及具体的停靠计划。例如:此刻电梯停靠需求为4 5 10(有三位乘客,他们分别想去4楼、5楼和10楼),如果在每一层楼都停靠则三位乘客到达办公室所需要的时间为3*4=12秒、4*4+10=26秒、4*9+2*10=56秒,则最后一位乘客到达办公室的时间为56秒,相应的停靠计划为4 5 10均停靠。对于此测试用例电梯停靠计划方案:4 10,这样到第4楼的乘客所需时间为3*4=12秒,到第5楼的乘客所需时间为3*4+20=32秒,到第10楼的乘客所需时间为9*4+10=46秒,即最后到达目的楼层的顾客所需时间为46秒。

输入要求:

输入的第1行为整数n f1 f2 … fn,其中n表示有n层楼需要停靠,n=0表示没有更多的测试用例,程序终止运行。f1 f2 … fn表示需要停靠的楼层(n<=30,2<=f1

输出要求:

对于每一个测试用例,第1行输出最后一位乘客到达目的楼层所需时间,第2行输出停靠次数和相应的停靠方案,每一个数字用一个空格隔开。

1.2 算法文字描述

程序实现的算法思想,将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到远问题的解。与分治法不同的是,适合用动态规划发求解的子问题往往不是相互独立。若用分治法求解这类问题,则分解的子问题数目太多,以至于最后解决原问题需要耗费指数时间。然而,不同子问题的数目常常是多项式量级。在分治法求解时,有些子问题被重复计算了许多次。如果能够保存已解决的子问题的答案,而在需要时在找出以求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。为了达到这个目的,可以采用一个表来记录所有已解决的子问题的答案。不管子问题以后是否被使用,只要他被计算过,就将其结果填入表中。动态规划算法适合求解最优化问题,设计动态规划算法的具体步骤如下:○1找出最优解的性质,并刻画其结构;○2递归地定义最优值;

○3以自底向上的方式计算最优值;○4根据计算最优值时得到的信息,构造最优解。

例如:给定金额n以及1,2,5分硬币,求找n的最少硬币数。

对于大于1分的找零理所当然可以找零1分,大于2分和5分的找零与此类似,那么找零时就有三种选择,即找零后剩余金额为n-1,n-2,n-5,这三种选择总的找零数最少的方案即为所求解的方案。显然,最终的找零方案与执行当前选择后剩余的金额的找零相关,即金额n的最优找零方案包含了金额n-1,n-2,n-5的最优找零方案,于是可得如下状态转移方程:

F(F)=FFF{F(F?1)+1 F(F?2)+1 F(F?5)+1

具体的求解过程:

初始化F(1)=1,F(2),F(5)=1

算法设计思路及求解过程

思路:题目所描述的整个过程是“并行的”,而且所有人到达各自楼层的用时只与最晚到达的人有关。由于去各个楼层的具体数目对结果没有影响,所以可以将“电梯还剩i个人”表述成“电梯里面的乘客还要去i个楼层”。电梯从第1层开始向上运行,任意时刻的状态都可以由“电梯当前所处楼层”和“电梯里面都有哪些乘客确定”,初始状态为“电梯在1楼”和“所有乘客都在电梯上”。

在电梯运行的每一个阶段都需要作出相应的决策,哪些乘客乘坐电梯到目的层,哪些乘客选择爬楼梯到达目的地。决策后,电梯里面的乘客被分成两部分:乘客留在电梯里面继续上升;乘客离开电梯走楼梯到达。求当前状态下电梯里面的乘客所有人到达目的所需要的最短时间,只需要找到一个最优决策,使得下电梯的乘客和留在电梯中的乘客最晚到达时间越短越好,这个最短时间就是当前状态下的最优解。如果假设决策后留在电梯里面的乘客到达各自楼层所需要的时间

为T1,离开电梯的各自到达目的地所需时间为T2,则min{max(T1,T2)}就是当前状态的最优解,其中T1可以由“当前层数+1”和“决策后剩下的人”确定的状态得到;T2则为下电梯走楼梯到达目的走楼梯最多的那一位乘客所花时间。

如果去第k 层的乘客选择在当前楼层下电梯,那么第1,2…k -1层的乘客也应该选择在此时下电梯(如图 1所示),这样就可以得到当前决策下的一个最优解。

为了进一步处理停靠请求,对楼层按从高到低进行排序,并以此进行编号,如此可以避免在求解过层中处理不连续的请求,如:4,5,10。使用i,j 两个参数表示电梯当前的状态,即电梯在第i 层,电梯中有j 位乘客。

综上所述,可得如下状态转移方程:

{f (i ,j )=min {max (t1,t2)}

F1=F (F +1,F )+FFFF +FFFFF 0≤F ≤F F2=max {|F [F ]?F |?FFFF } F +1≤F ≤F

f(i,j)表示电梯在第i 层楼时,电梯中j 个人都到达目的地所需要的最短时间。

具体求解过程:

第一步:计算初始状态f (topFloor,1),f(topFloor,2),…,f(topFloor,n); 第二步:根据状态转移方程计算f(i,j);

第三步:根据计算最优值时记录的信息求解最优解。

图 1 解题结论

1.3 算法程序流程

图 2 Input函数流程图

模拟电子技术课程设计报告模板

模拟电子技术课程设计报告 设计课题: 数字电子钟的设计 姓名: 学院: 专业: 电子信息工程 班级: 学号: 指导教师:

目录 1.设计的任务与要求 (1) 2.方案论证与选择 (1) 3.单元电路的设计和元器件的选择 (5) 3.1 六进制电路的设计 (6) 3.2 十进制计数电路的设计 (6) 3.3 六十进制计数电路的设计 (6) 3.4双六十进制计数电路的设计 (7) 3.5时间计数电路的设计 (8) 3.6 校正电路的设计 (8) 3.7 时钟电路的设计 (8) 3.8 整点报时电路的设计 (9) 3.9 主要元器件的选择 (10) 4.系统电路总图及原理 (10) 5.经验体会 (10) 参考文献 (11) 附录A:系统电路原理图 (12) 附录B:元器件清单 (13)

数字电子钟的设计 1. 设计的任务与要求 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。且由于数字钟包括组合逻辑电路和时叙电路。通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。 1.1设计指标 1. 时间以12小时为一个周期; 2. 显示时、分、秒; 3. 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 4. 计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时; 5. 为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。1.2 设计要求 1. 画出电路原理图(或仿真电路图); 2. 元器件及参数选择; 3. 编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。 2. 方案论证与选择 2.1 数字钟的系统方案 数字钟实际上是一个对标准频率(1H Z)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1H Z时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.360docs.net/doc/8917677754.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

网页制作课程设计报告

网页制作课程设计报告 学院: 专业班级: 姓名: 学号: 成绩: 阅卷教师:

目录 1.设计目的 (1) 2.设计思想 (1) 2.1网站整体结构规划思想 (1) 2.2 主页设计思想 (1) 2.3子页的设计思想 (1) 3网页详细设计分析 (1) 4结论 (2)

1.设计目的 阐述该个人网站的设计意图和创意,简单介绍自己的个人网站。 2.设计思想 阐述网站的整体设计思想,包括: 2.1网站整体结构规划思想 要求阐述网站整体结构的选择、设计的思想,绘制网站结构草图。 2.2 主页设计思想 要求对主页的布局思路进行阐述和分析。 2.3子页的设计思想 要求对子页的设计以及网页对象的选取思路进行阐述和分析。 3网页详细设计分析 要求选取一张网页,对网页的设计实现过程进行阐述和分析,详细说明制作该网页的步骤,所使用的网页对象以及该网页对象的操作方法。

4结论 对整个设计报告做归纳性总结,并分析设计过程中的困难及如何解决的,最后提出展望。 一、设计目的 本课程的设计目的是通过实践使同学们经历Dreamweaver cs3开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握运用Dreamweaver cs3可视化开发工具进行网页开发的方法;了解网页设计制作过程。通过设计达到掌握网页设计、制作的技巧。了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。熟练掌握Photoshop cs3、Dreamweaver cs3等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素

游戏24点课程设计报告

游戏24点课程设计报告 一.题目: 分析类: 计算24点:任意输入4位数字,利用+,-,*,/四则运算使之得到结果 24。输出所有不同算法的计算表达式,可为运算优先级而使用括号。 二.问题分析: 1.全面性: 此问题要求输出结果为24的计算表达式,并且要求输出要全面,我考虑用for循环与递归实现遍历来保证输出的全面性,考虑到递归的‘一归到底',每一次完整递归都代表一种算法(详情见算法)。 2.输出的判定和四位数字的类型: 在输出的时候对最后结果等于24的判别,因为考虑到有除法,有可能中途结果可能会出现不能整除的情况与小数,所以输出的四个数都设为float型,且输出判定的时候用近似判定法,而不直接写让最后结果等于24(详情见算法)。 3.重复性: 如果用循环与递归保证了输出24的表达式的全面性,但不可避免的会出现重复,才开始我想在遍历与递归时,加一些限定条件来消除重复但是这样做不但会出错,还不能保证它的输出全面性。于是我想在输出的时候加限定条件,使重复的只输出一遍。 但是对于输入的那4位数字中如果有重复的话,程序结果还是会出现重复的,此问题尚未解决.(详情见算法)。 4.括号问题的处理: 对于括号问题,我规定对每一步的计算表达式,除了*之外,+,-,\都加上括号,即让程序按自己规定的方向执行,输出的括号只是让人能看懂,其实在运算时不起作用(详情见算法)。 5.输出: 输出方面我以为用了遍历所以在每一层遍历都把运算表达式存到一个较大的数组中,在输出的时候如果满足输出条件(在遍历时纪录每次递归的第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符),就直接把那个数组里的内容输出,遍历会直接去寻找表达式里的表达式(详情见算法)。 三.算法描述(源代码里有更详尽解释): 1.主要方法: 遍历与递归。 2.主要思路: 把输入的四个数放在一个数组n[4]中,然后任取其中任意两个(不能取同一个--既不能出现自己和自己运算的情况),然后用一个for和一个switch语句来实现这两个数的加减乘除运算,然后把运算的结果放到另一个数组b[4]中并记录此运算的表达式(放到一个大一点的数组tm[4][25]中),同时把其他两个没用到的数也放到该数组中,然后重复以上过程(用遍历实现),最后先判定是不是最后一层运算,是的话在判定最后结果是不是等于24,等于24的话就把那个纪录运算式的数组输出。然后考虑到不能出现重复的(例如:1*2*3*4和2*4*3*1等等)我在遍历的同时记录了第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符,对输出的时候做限定(例如:对运算符全*的只输出一遍等等)。在有一次输出后我还定义了另外两个数组用来分别保存上一次输出的第一次运算的结果,第一次运算的运算符,第二次运算的结果,第二次运算的运算符和第三次运算的运算符,来解决重复输出的问题,不过此种做法有可能导致输出的时候不全。(此问题尚未解决)即还不能同时保证全面性与不重复性。 3.主要函数与数组:

《电子设计基础》课程设计报告模板

课程设计报告册格式(本页不打印) 一、设计任务(四号、黑体,不加粗) 例如:十字路口交通灯控制系统设计(正文全部为宋体、小四,下同) 二、设计要求 教师下达的设计基本要求…… 三、设计内容 1.设计思想(宋体、小四、加粗) 对题目的理解,计划采用的实现方法 2.设计说明 对设计方案的简单综述,建议增加方案对比内容; 3.系统方案或者电路结构框图 包含对各个单元电路的详细分析; 保留详细的参数计算、卡诺图、状态转换图等设计内容; 4.设计方案 一个模块电路结构对应一个仿真波形和一段文字说明; 仿真及分析时,请捕捉关键点的波形数据,以确保设计结果具有良好的说服力; 5.电路原理总图 A4纸整张打印,打印出图纸边框 绘制原理图时,应注意加入电源、信号输入与输出端口; 芯片内部具有多个相同功能单元时,注意充分利用; 元器件在电路原理图中的布局应规范、紧凑; 6.PCB分层打印图 按照相同比例分别打印出顶层、底层、丝印层,并尽可能打印在同一张A4纸中; 在保证布通率的前提下,尽量选择较大的线宽、安全间距; 四、设计总结 个人真实的总结体会,不低于100字。 五、参考资料 包括网站、网页的资料;从网站上下载资料过多将被视为抄袭,一定要强调自己的设计思路,创新理念。 注: ——课程设计论文用A4纸打印,文中的计量单位、制图、制表、公式、缩略词和符号应遵循国家的有关规定。 ——实验报告采用A4纸双面打印,实验报告的内容全部手写,所有的打印图请牢固粘贴在实验报告上,不要使用QQ截图等低像素的截图工具。 ——封面与任务书双面打印在同一张A4纸;

1、设计题目 数字钟 2、设计内容和要求: 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。 设计要求采用中小规模集成器件完成具有以下技术指标的数字钟: (1)显示时、分、秒; (2)24小时制计数; (3)具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。校时时钟源可以手动输入或借用电路中的时钟; (4)具有正点报时功能; (5)要求计时准确、稳定。 3、设计目的 (1)进一步熟悉各种进制计数器的功能及使用; (2)掌握译码器显示电路的应用; (3)熟悉集成芯片的内部结构及应用; (4)掌握数字电子钟的组成与工作原理; (5)提升对实际电路的设计和调试能力。 4、设计原理 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,一般由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等单元组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,在精度要求不高的时候,可选用555定时器构成的振荡器加分频器来实现,但精度要求高的电路中多采用晶体振荡器电路加分频器实现,在本设计中要求精度高,所以选用的是后者。将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”可采用12进制也可采用24进制计数器,本实验采用24进制。最终完成一天的计数过程。译码显示电路将“时、分、秒”计数器的输出状态经七段显示译码器译码,通过六位LED 显示器显示出来。整点报时电路是根据计时系统的输出状态产生一个脉冲信号,去触发音频发生器实现报时。校时电路是对“时、分”显示数字进行校正和调整。其数字电子钟系统框图如图1所示。

WEB个人主页课程设计

Web应用开发技术 实验报告 专业:计算机科学与技术 班级: 学号: 姓名:

一、设计题目 个人网站 二、目的 1、本次设计是学生在学完ASP动态网站开发课程后的一次实践性很强的课程设计,是对ASP进行动态网站开发所学知识的综合运用。 2、掌握使用ASP技术进行网站开发设计。 3、通过本次实习,使学生加深所学知识内容的理解,并能积极地调动学生的学习兴趣,结合实际应用操作环境,真正做到理论与实际相结合。 三、功能需求描述 此网站可以对主人留言,来发表自己的心情,也可以把自己的联系方式写入其中,达到和睦相处、心灵的驿站的目的等。 四、总体设计

五、详细设计 (一)、我的主页 此页面为网站的主页,通过发布新心情,点击通讯录可以查看通讯录好友信息,点击留言板可以查看好友留言。 主要代码: 个人空间