1、数据结构与算法分析课程设计教学任务书一、课程设计的目的数据结构与算法课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构与算法是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能
2、力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。二、课程设计的基本要求1. 独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。2. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。3. 按照课程设计的具体要求建立功能模块,每个模块要求按照如下几个内容认真完成:a)需求分析:在该部分中叙述,每个模块的功能要求b)
3、概要设计:在此说明每个部分的算法设计说明(可以是描述算法的流程图) ,每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)c)详细设计:各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释d)调试分析:测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些,问题如何解决?) ,算法的改进设想课程设计总结:(保存在 word 文档中)总结可以包括:课程设计过程的收获、遇到的问题、解决问题过程的思考、
4、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对数据结构课程的认识等内容4. 实现的结果必须进行检查和演示,程序源代码和程序的说明文件必须上交,作为考核内容的一部分。 (上交时每人交一份,文件夹的取名规则为:“学号 姓名” ,如“06105198 高魁” 。该文件夹下至少包括:“源代码” 、 “课程设计报告” 、 “可执行文件” 。由学习委员收集按规定时间统一上交) 5. 课程设计报告不要附源代码,可以对重点函数及结构进行说明。6. 报告提交时间:第 20 周星期四检查,第 20 周星期五由学习委员收集上交,迟交无成绩。形式:课程设计报告(要求手写) 。三. 课程设计内容1.
5、分治法:最小套圈设计问题描述套圈游戏是游乐场中常见的游戏之一,其规则为:游戏者将手中的圆环套圈投向场中的玩具,被套中的玩具就作为奖品奖给游戏者。现给定一个套圈游戏场的布局,固定每个玩具的位置,请设计圆环套圈的半径尺寸,使得它每次最多只能套中一个玩具。但同时为了让游戏看起来更具吸引力,这个套圈的半径又需要尽可能大。把问题进一步简化,假设每个玩具都是平面上的一个没有面积的点,套圈是简单的圆。一个玩具被套中,是指这个点到圆心的距离严格小于圆半径。如果有两个玩具被放在同一个位置,那么输出的圆半径就是 0。基本要求(1) 输入由若干组测试数据组成。每组数据的第一行包含一正整数 N(2N 10000),代
6、表场地中玩具的个数。接下来有 N 行输入,每行包含一个玩具的 x 和 y 坐标。当 N 为 0 时,表示全部测试结束,不要对该数据做任何处理。(2)输出要求:对每一组测试,在一行里输出符合设计要求的套圈的半径,精确到小数点后两位;(3)用分治法来实现。(4) 输入例子:20 01 121 11 13-1.5 00 00 1.50输出例子:0.710.00 0.75测试数据自己编写若干组数据。2. 分支限界法:顶点赋权图的权值和最大的团问题问题描述设 G=( V,E )是一个顶点赋权的图。图 G 的一个团是指图 G 的一个完全子图,即该子图中任意两个相异的顶点都有一条边相连。顶点赋权图的权值和最
7、大的团问题就是要找出图 G 中顶点权值和最大的一个团。例如,下图所示的顶点赋权图的权值和最大的团包括顶点 2、3、5,其权值和为 11,其中顶点旁的数字为该顶点的权值。基本要求(1) 输入包括图的邻接矩阵和图的顶点权值。(2) 输出包括顶点赋权图的权值和最大的团的顶点权值和,以及该团具体包含的顶点。(3) 用分支限界法来求解顶点赋权图的权值和最大的团问题。测试数据自己给出若干连通图。3. 并查集:检查网络问题描述给定一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传输。写出程序判断:任意指定两台计算机,它
8、们之间是否可以进行文件传输?532311 234 5基本要求(1)输入由若干测试数据组成。对于每一组测试,第 1 行包含一个整数 N(N10000),即网络中计算机的总台数,因而每台计算机可用 1 到 N 之间的一个正整数表示。接下来的前几行输入为 I C1 C2,其中 C1 和 C2 是两台计算机的序号,I 表示在 C1 和 C2 间输入一条连线;后几行输入为 C C1 C2,同样 C1 和 C2 是两台计算机的序号,C 表示检查C1 和 C2 间是否可以传输文件,S 表示该组测试结束。当 N 为 0 时,表示全部测试结束。(2)输出要求:对每一组 C 开头的测试,检查 C1 和 C2 间是
9、否可以传输文件,若可以,则在一行末输出yes ,否则输出no 。当读到 S 时,检查整个网络。若网络中任意两机器间都可以传输文件,则在一行末输出“The network is connected.”,否则输出“There are k components.”,其中 k 是网络中联通集的个数。两组测试数据之间输出一空行分隔。(3) 用并查集来求解该问题。(4) 输入例子:3I 1 2C 1 2C 1 3S3I 3 1I 2 3C 1 2S0输出例子:C 1 2 yesC 1 3 noThere are 2 components.C 1 2 yesThe network is connected.
10、测试数据自己编写若干测试数据。4. 交通咨询系统设计问题描述设计一个交通咨询系统,能让旅客咨询从任一个城市到另一个城市之间的最短路径(里程)或最低费用。基本要求(1)设计若干个城市的平面图,所含城市不少于 7 个。以图中顶点表示城市,存放城市的名称、代号、简介等信息;以边表示路径,存放路径长度和行程费用等相关信息。(2)为来访客人提供图中任意城市相关信息的查询。(3)查询从任一给定城市到其他任意城市之间的最短路径、或费用最低路径(Dijkstra 算法) 。(4)查询任意两个城市之间的最短路径、或费用最低路径(Floyd 算法) 。测试数据5. 最少硬币问题问题描述设有 n 种不同面值的硬币,
11、各个硬币的面值存于数组 T1:n中,现在要用这些面值的硬币来找钱,可以使用的各种面值的硬币个数存于数组 Coin1:n中。对于任意钱数 m,设计一个用最少硬币找钱 m 的方法。基本要求(1)数据输入:由文件 input.txt 提供输入数据,文件的第一行中只有一个整数给出 n的值,第二行起每行 2 个数,分别是 Tj和 Coinj,最后一行是要找的钱数 m。结果输出:将计算出的最少硬币数输出到文件 output.txt,问题无解时输出-1 。问题有解时,还需输出具体的支付方案。(2) 用动态规划来求解该问题。(3) 输入文件示例 输出文件示例input.txt output.txt3 51 3 22 3 05 3 312801385236881215798005116951382553 天津郑州成都西安北京1234567广州上海18测试数据由读者给定若干实例。四、成绩评定评分标准:根据完成任务的情况、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。上机程序未通过者、无设计报告者以及严重抄袭他人设计者,成绩均为不及格。数据结构与算法分析课程设计报告设计题目: 专 业 学 号 姓 名 2010 年 月 日