《算法设计综合实训》题目讲解
算法设计题_实验报告

一、实验目的1. 理解和掌握最优路径搜索算法的基本原理和实现方法。
2. 能够根据实际问题选择合适的算法,并对其进行优化和改进。
3. 提高算法分析和设计能力,以及编程实现能力。
二、实验内容本次实验要求设计并实现一种最优路径搜索算法,以解决迷宫问题。
迷宫由二维数组表示,其中1表示障碍,0表示通路。
要求算法能够从入口位置出发,找到到达出口的最短路径。
三、实验原理1. Dijkstra算法:Dijkstra算法是一种基于贪心策略的最短路径算法,适用于图中所有边的权重都为非负值的情况。
算法的基本思想是从起点出发,逐步扩展到相邻节点,计算到达每个节点的最短路径长度,并记录下到达该节点的最短路径。
2. A搜索算法:A搜索算法是一种启发式搜索算法,结合了Dijkstra算法和最佳优先搜索算法的优点。
算法的基本思想是在Dijkstra算法的基础上,引入启发函数来估计从当前节点到目标节点的距离,从而优先搜索那些更有可能到达目标节点的路径。
四、实验过程1. 算法设计(1)Dijkstra算法实现:1)初始化:设置一个距离数组dist[],用于存储从起点到各个节点的最短路径长度,初始时将起点到自身的距离设为0,其余节点设为无穷大。
2)更新距离:从距离数组中选取距离最小的节点,将其标记为已访问,并将该节点到其相邻节点的距离进行更新。
3)重复步骤2),直到找到目标节点或所有节点都已访问。
(2)A搜索算法实现:1)初始化:设置一个开放列表openList和封闭列表closedList,分别用于存储待搜索节点和已搜索节点。
将起点加入openList,并设置其f值(g值+启发函数值)。
2)搜索过程:从openList中选取f值最小的节点,将其标记为当前节点,并将其加入closedList。
3)更新相邻节点:对于当前节点的相邻节点,计算其g值、h值和f值,如果相邻节点不在closedList中,且其f值小于openList中对应节点的f值,则将其加入openList。
《算法综合实验》实验报告

实验5、《算法综合实验》一、实验目的1. 理解和复习所学各种算法的概念2. 掌握和复习所学各种算法的基本要素3. 掌握各种算法的优点和区别4. 通过应用范例掌握选择最佳算法的设计技巧与策略二、实验内容1. 使用贪心算法、回溯法、分支限界法解决0-1背包问题;2. 通过上机实验进行算法实现;3. 保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。
三、算法思想分析1.贪心算法理论上只能解决满足贪心选择性质的问题,而0-1背包并不满足该性质,所以并不能保证能够找到最优解法,只能找到最接近的解,当然如果运气好,也是可以找到最优解的。
利用按重量从小到大、按价值从大到小、按价值/重量从大到小三种方式通过贪心算法求得每种方式的最终结果,并比较三种方式的最大价值取最大的那个,即为贪心算法获得的最优解。
2.回溯法解决0-1背包问题的解空间为子集树,利用回溯法的基本代码模版即可,其中左子树为约束条件,即背包能否装下该物品,右子树为限界条件,即当前物品不放入背包,剩余物品是否有可能创造比当前最大价值更大的价值,如果可以则进入右子树,反之,则直接剪去右子树。
3.0-1背包的解空间为子集树,分支界限法是采用广度优先搜索,每次选取队列的最前面的结点为活结点。
1)算法从根结点A即标记结点开始,初始时活结点队列为空,A入队列。
2)A为活结点,A的儿子结点B、C为可行结点。
将B、C加入队列,舍弃A。
此时队列元素为C-B;3)B为活结点,B的儿子结点D、E,而D为不可行结点。
将E入队列,舍弃B。
此时队列元素为E-C;4)循环以上步骤按照以上方式扩展到叶节点。
四、实验过程分析1.贪心算法的思路很简单即为一直循环下去,直至不满足指定条件。
用于解决0-1背包问题时需要考虑多种放入方式,因为不管哪种方式都不能百分百会得到最优解,只能取多种放入方式中的最优解作为问题的最优解。
这道题目的收获在于贪心算法对于不能保证获得最优解的情况下,如何获得最接近的解,比如0-1背包问题则是采用多种放入方式再进行比较取最优解。
《算法设计综合实验》教案(5篇)

《算法设计综合实验》教案(5篇)第一篇:《算法设计综合实验》教案《算法设计综合实验》教案统计与应用数学学院2012年5月11日制实验一数据类型、运算符和表达式实验目的:1、掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法;2、掌握不同的数据类型之间赋值的规律;3、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用;4、学会使用赋值运算符及复合赋值运算符;5、进一步熟悉C程序的编辑、编译、连接和运行的过程。
实验环境:Windows操作系统、Visual C++6.0实验学时:2学时;实验内容:1、整型变量实型变量、字符型变量的定义与输出,赋整型常量值时的情形,以及给整型变量赋字符常量值时的情形;2、各类数值型数据间的混合运算;3、要将“China”译成密码,密码规律是:用原来的字母后面第4各字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。
因此,“China”应译成“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
实验二顺序结构程序设计实验目的:1、掌握C语言中赋值语句的使用方法;2、掌握各种类型数据的输入输出方法,能正确使用各种格式转换符;3、学习调试程序。
实验环境: Windows操作系统、Visual C++6.0 实验学时:2学时;实验内容:1、掌握各种格式转换符的正确使用方法;2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果。
输出时要有文字说明,取小数点后两位数字。
3、编程序:用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
算法设计综合实训指导书

《算法设计综合实训》指导书一、实训目的依据人才培养方案的要求及教学计划的安排,在《数据结构》课程后安排这次课程实训,通过这次实训可达到以下目的:(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
(2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
(3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
(4)激发学生的学习兴趣。
(5)提高学生的计算思维能力,具备一定的算法分析与设计的能力。
二、实训内容1、根据设计的需求,能阅读和理解;2、根据功能的需求,使用所学知识转化成计算机管理;三、实训进度内容安排序号实训内容计划学时(天)教学要求教法建议1 选题与搜集资料 1 学生听老师讲授,并能理解一些细节通过讲解让学生简单了解系统的需求2 分析与概要设计3 根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构、并在此基础上进行实现程序功能的算法设计3 程序设计 5 运用掌握C/C++/Java语言编写程序,实现所编程序的各个模块功能。
调试程序,并记录测试情况。
符合代码编写规范。
辅导,出现问题多可以统一解答4答辩1提交设计报告、成果、成果演示、答辩教学主任教研室主任课程负责人合计10四、基本要求(一)设计要求(1)所有学生统一在机房进行设计;(2)听从指导老师的统一安排;(3)严格遵守作息时间、不迟到、不早退,病、事假必须向指导老师请假;(4)使用C/C++/JA V A进行开发;(5)满足编程规范;(6)设计结构清晰(模块化开发)。
(7) 根据任务书的要求选择设计题目,针对线性表、栈、队列与递归、字符串算法设计至少选作2个题目,树、图至少选作1个题目,查找与排序至少选作1个题目。
根据题目难易程度进行综合评分。
(8)抄袭他人程序者记零分。
(二)报告要求(1)问题描述:描述要求编程解决的问题。
算法设计与分析常见习题及详解

算法设计与分析常见习题及详解⽆论在以后找⼯作还是⾯试中,都离不开算法设计与分析。
本博⽂总结了相关算法设计的题⽬,旨在帮助加深对贪⼼算法、动态规划、回溯等算法的理解。
1、计算下述算法执⾏的加法次数:输⼊:n =2^t //t 为整数输出:加法次数 k K =0while n >=1 do for j =1 to n do k := k +1 n = n /2return k解析:第⼀次循环执⾏n次加法,第⼆次循环执⾏1/2次加法,第三次循环执⾏1/次加法…因此,上述算法执⾏加法的次数为==2n-12、考虑下⾯每对函数 f(n) 和 g(n) ,如果它们的阶相等则使⽤Θ记号,否则使⽤ O 记号表⽰它们的关系解析:前导知识:,因为解析:,因为解析:,因为解析:解析:3、在表1.1中填⼊ true 或 false解析:利⽤上题的前导知识就可以得出。
2=21/4n +n +21n +41...+1n +n −n +21n −21n +41....−1f (n )=(n −2n )/2,g (n )=6n1<logn <n <nlogn <n <2n <32<n n !<n ng (n )=O (f (n ))f (n )=Θ(n ),g (n )=2Θ(n )f (n )=n +2,g (n )=n n 2f (n )=O (g (n ))f (n )=Θ(n ),g (n )=Θ(n )2f (n )=n +nlogn ,g (n )=n nf (n )=O (g (n ))f (n )=Θ(nlogn ),g (n )=Θ(n )23f (n )=2(log ),g (n )=n 2logn +1g (n )=O (f (n ))f (n )=log (n !),g (n )=n 1.05f (n )=O (g (n ))4、对于下⾯每个函数 f(n),⽤f(n) =Θ(g(n))的形式,其中g(n)要尽可能简洁,然后按阶递增序排列它们(最后⼀列)解析:最后⼀个⽤到了调和公式:按阶递增的顺序排列:、、、、、、、、、(n −2)!=Θ((n −2)!)5log (n +100)=10Θ(logn )2=2n Θ(4)n 0.001n +43n +31=Θ(n )4(lnn )=2Θ(ln n )2+3n logn =Θ()3n 3=n Θ(3)n log (n !)=Θ(nlogn )log (n )=n +1Θ(nlogn )1++21....+=n1Θ(logn )=∑k =1nk 1logn +O (1)1++21....+n 15log (n +100)10(lnn )2+3n logn log (n !)log (n )n +10.001n +43n +313n 22n (n −2)!5、求解递推⽅程前导知识:主定理前导知识:递归树:例⼦:递归树是⼀棵节点带权的⼆叉树,初始递归树只有⼀个结点,标记为权重W(n),然后不断进⾏迭代,最后直到树种不再含有权为函数的结点为⽌,然后将树根结点到树叶节点的全部权值加起来,即为算法的复杂度。
《算法设计》中一道探究题的解析

《算法设计》中一道探究题的解析崇明中学陈超一、题目提出一次听课时,授课教师用“小明有只密码锁的拉竿箱,忘记了密码,密码锁是四位数字,只记得这个四位数前三位为均为1。
请问你能帮他解决这个问题吗?”作为枚举算法引入的实例,由于该实例来自于学生身边,在师生的共同分析研究下,学生较快地理解与掌握了枚举算法。
对该实例进行探究后,得到了以下多种算法。
二、算法递进1、枚举法(当时授课教师提供,略作改变)结构特点:循环结构嵌套分支结构。
算法分析:循环结构用于一一列举;分支结构用于逐一检验,并输出密码值。
Dim key As Integer, i As IntegerRandomizeKey = Int(10 * Rnd())i = 0Do While i <= 9If i = Key ThenPrint 1110 + KeyEnd Ifi = i + 1Loop2、改进版枚举法,消除冗余循环结构特点:1、循环结构嵌套分支结构;2、循环结构中设置退出出口。
算法分析:密码值具有唯一性,所以找到密码后即可输出结果,并退出循环结构。
(1)、重置循环变量的值,使循环的条件不成立,从而实现退出循环结构。
VB 代码如下:Dim key As Integer, i As Integer RandomizeKey = Int(10 * Rnd()) i = 0Do While i <= 9 If i = Key Then Print 1110 + Key i = 9 End If i = i + 1 Loop(2)、强制退出循环结构。
VB 代码如下:Dim key As Integer, i As Integer RandomizeKey = Int(10 * Rnd()) i = 0Do While i <= 9If i = Key Then Print 1110 + KeyExit Do End If i = i + 1Loop3、改变循环条件的设置 结构特点:单循环结构。
『嗨威说』算法设计与分析-PTA程序存储问题删数问题最优合并问题(第四章上机实践报告)

『嗨威说』算法设计与分析-PTA程序存储问题删数问题最优合并问题(第四章上机实践报告)本⽂索引⽬录:⼀、PTA实验报告题1 :程序存储问题 1.1 实践题⽬ 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析⼆、PTA实验报告题2 :删数问题 2.1 实践题⽬ 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析三、PTA实验报告题3 :最优合并问题 3.1 实践题⽬ 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析四、实验⼼得体会(实践收获及疑惑)⼀、PTA实验报告题1 :程序存储问题 1.1 实践题⽬: 1.2 问题描述: 题意是,题⼲给定磁盘总容量和各个⽂件的占⽤空间,询问该磁盘最多能装⼏个⽂件。
1.3 算法描述: 签到题,只需要将各个⽂件从⼩到⼤排序,并拿⼀个变量存储已占⽤的容量总和,进⾏对⽐即可得到结果。
#include<bits/stdc++.h>#include<algorithm>using namespace std;#define MAXLENGTH 1000int interger[MAXLENGTH];int main(){int num,length;int sum = 0;int counter = 0;int m = 0;cin>>num>>length;for(int i=0;i<num;i++){cin>>interger[i];}sort(interger,interger+num);while(true){if(sum+interger[m]>length||counter==num)break;sum+=interger[m];counter++;m++;}cout<<counter<<endl;return0;} 1.4 算法时间及空间复杂度分析: 整体算法上看,输⼊需要O(n)的时间进⾏输⼊,最快⽤O(nlogn)的时间复杂度进⾏排序,使⽤O(n)的时间进⾏结果叠加,总时间复杂度为O(nlogn),时间复杂度花费在排序上。
《算法设计综合实验》教案课件

《算法设计综合实验》教案统计与应用数学学院2012年5月11日制实验一数据类型、运算符和表达式实验目的:1、掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法;2、掌握不同的数据类型之间赋值的规律;3、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加和自减运算符的使用;4、学会使用赋值运算符及复合赋值运算符;5、进一步熟悉C程序的编辑、编译、连接和运行的过程。
实验环境:Windows操作系统、Visual C++6.0实验学时:2学时;实验内容:1、整型变量实型变量、字符型变量的定义与输出,赋整型常量值时的情形,以及给整型变量赋字符常量值时的情形;2、各类数值型数据间的混合运算;3、要将“China”译成密码,密码规律是:用原来的字母后面第4各字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。
因此,“China”应译成“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
实验二顺序结构程序设计实验目的:1、掌握C语言中赋值语句的使用方法;2、掌握各种类型数据的输入输出方法,能正确使用各种格式转换符;3、学习调试程序。
实验环境:Windows 操作系统、Visual C++6.0实验学时:2学时;实验内容:1、掌握各种格式转换符的正确使用方法;2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf 输入数据,输出计算结果。
输出时要有文字说明,取小数点后两位数字。
3、编程序:用getchar 函数读入两个字符给c1、c2,然后分别用putchar 函数和printf 函数输出这两个字符。
上机运行程序,比较用printf 和putchar 函数输出字符的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计综合实训题目0.逆序数字(借助栈)编写一个函数,接收一个4位整数值,返回这个数中数字逆序后的结果值。
例如,给定数7631,函数返回1367.输入:第一行一个正整数T(T<=10),表示有T组测试数据; 以下T行,每行一个非负的整数N。
输出:共T行,对于每组输入数据输出一行,即数字逆序后的结果值。
样本输入:3763110185158样本输出:1367810185151.人见人爱A+B这个题目的A和B不是简单的整数,而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒。
输入:输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒。
题目保证所有的数据合法。
输出:对于每个测试实例,输出A+B,每个输出结果也是由时分秒3部分组成,同时也要满足时间的规则(即:分和秒的取值范围在0-59),每个输出占一行,并且所有的部分都可以用32位整数表示。
样本输入:21 2 3 4 5 634 45 56 12 23 34样本输出:5 7 947 9 302.敲七【问题描述】输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)【要求】【数据输入】一个整数N。
(N不大于30000)【数据输出】从小到大排列的不大于N的与7有关的数字,每行一个。
【样例输入】20【样例输出】714173.统计同成绩学生人数问题【问题描述】读入N名学生的成绩,将获得某一给定分数的学生人数输出。
【要求】【数据输入】测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数当读到N=0时输入结束。
其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。
【数据输出】对每个测试用例,将获得给定分数的学生人数输出。
【样例输出】380 60 9060285 66560 75 90 55 7575【样例输出】124.高斯日记大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210。
后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。
这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。
高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。
5.牛的繁殖问题有位科学家曾出了这样一道数学题:有一头母牛,它每年年初要生一头小母牛;每头小母牛从第四个年头起,每年年初也要生一头小母牛。
按此规律,若无牛死亡,第20个年头上共有多少头母牛。
6.最少钱币数问题【问题描述】这是一个古老而又经典的问题。
用给定的几种钱币凑成某个钱数,一般而言有多种方式。
例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。
显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
【要求】(代码需加注释)【数据输入】输入可以有多个测试用例。
每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K个互不相同的钱币面值Ki(1 <= Ki <= 1000)。
输入M=0时结束。
【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。
如果凑钱失败,输出“Impossible”。
你可以假设,每种待凑钱币的数量是无限多的。
【样例输入】156 2 5 10 20 50 10011 2【样例输出】2Impossible7. 运动会分数统计【任务描述】参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的得分分别为:7、5、3、2、1,前三名的得分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)【功能要求】1)可以输入各个项目的前三名或前五名的成绩。
2)能统计各学校总分。
3)可以按学校编号或名称、学校总分、男女团体总分排序输出。
4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询。
6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称。
【输出形式】有合理的提示,各学校分数为整型。
【界面要求】有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
【存储结构】学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在C /C++语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构。
【测试数据】要求使用(1)全部合法数据;(2)整体非法数据;(3)局部非法数据分别进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明。
8. 飞机订票系统任务:通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。
2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况。
3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班。
4)退票:可退票,退票后修改相关数据文件。
客户资料有姓名、证件号、订票数量及航班情况,订单要有编号。
5)修改航班信息:当航班信息改变时,可以修改航班数据文件。
要求:根据以上功能说明,设计航班信息、订票信息的存储结构,设计程序完成功能。
9. 文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构:使用线性表,分别用几个子函数实现相应的功能。
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";(3)输出删除某一字符串后的文章。
10. 宿舍管理查询软件问题描述:为宿舍管理人员编写一个宿舍管理查询软件。
程序设计要求:(1)采用交互工作方式。
(2)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)。
(3)查询菜单(用二分查找实现以下操作):按姓名查询、按学号查询、按房号查询。
(4)打印任一查询结果(可以连续操作)。
11. 学校超市选址问题(带权有向图的中心点)设计要求:对于某一学校超市,其他各单位到其该超市的距离不同,同时各单位人员去超市的频度也不同。
请为超市选址,要求实现总体最优。
12. 教学计划编制问题针对学院的计算机系本科课程,根据课程之间的依赖关系,制定课程安排计划,并满足各学期课程数大致相同。
按照用户输入的课程数、学期数、课程间的先后关系数目以及课程间两两间的先后关系,程序执行后会给出每学期应学的课程。
功能要求:(1)输入的形式和输入值的范围:输入间用空格隔开。
要求用户输入的课程数小于20,学期数小于或是等于8,课程名的长度小于等于10个字符。
(2)程序所能达到的功能:按照用户的输入,给出每学期应学的课程。
(3)测试数据:输入:学期数:5,课程数:12,课程间的先后关系数:16,课程的代表值:v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12。
课程间两两间的先后关系:v1 v2, v1 v3, v1 v4, v1 v12, v2 v3, v3 v5, v3 v7, v3 v8, v4 v5, v5 v7, v6 v8, v9 v10, v9 v11, v9 v12, v10 v12, v11 v6 输出:第1学期应学的课程:v1 v9第2学期应学的课程:v2 v4 v10 v11第3学期应学的课程:v3 v6 v12第4学期应学的课程:v5 v8第5学期应学的课程:v713. 散列法的实验研究散列法中,散列函数构造方法多种多样,同时对于同一散列函数解决冲突的方法也可以不同。
两者是影响查询算法性能的关键因素。
对于几种典型的散列函数构造方法,做实验观察,不同的解决冲突方法对查询性能的影响。
14. 图书借阅管理系统主要分为两大功能:1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书)。
2)会员管理(增加会员、查询会员、删除会员、借书信息)。
15. 排序方法时间性能研究问题描述:对各种排序方法(直接插入排序、希尔排序、起泡排序、快速排序、直接选择排序、堆排序和归并排序)的时间性能进行比较。
基本要求:(1)设计并实现上述各种排序算法。
(2)产生随机的初始排列,分别调用上述排序算法,并比较时间性能。
待排序表的表长不小于100。
至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3 次移动)。
(3)统计在完全正序、完全逆序情况下的关键字比较次数和移动次数。
(4)最后对结果作出简单分析,包括对各组数据得出结果波动大小的解释。
16. 活期储蓄帐目管理活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:1)能比较迅速地找到储户的帐户,以实现存款、取款记账;2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
17. 二叉排序树的实现用顺序和二叉链表作存储结构1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T;2)对二叉排序树T作中序遍历,输出结果;3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;18.最小生成树问题设计要求:在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。