《计算机课程设计题目汇总.docx》由会员分享,可在线阅读,更多相关《计算机课程设计题目汇总.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大学生校园网VvSchool.CN努力打造的学生最有用的网络平台!1. 电梯调度算法模拟说明:电梯调度算法的根本原则就是假设在电梯运行方向上有人要使用电梯则连续往那个方向运动,假设电梯中的人还没有到达目的地则连续向原方向运动。具体而言,假设电梯 现在朝上运动,假设当前楼层的上方和下方都有恳求,则先响应全部上方的恳求,然后才向 下响应下方的恳求;假设电梯向下运动,则刚好相反。题目难度:较难设计要求:模拟多人在不同楼层同时要求到各自目的地时电梯的响应挨次,要求使用C 语言编程,定义适宜的数据构造。最终,需要说明设计思想,同时给出能够运行的源程序, 并给出对应的程序流程图。设计提示:可以用一个构造体
2、表示乘电梯的人,其中内容包括人的姓名、起始楼层、目的楼层;建立一个构造体的数组模拟当前全部需要乘电梯的人。把这个构造体数组作为程序 的输入,通过对数组中每个人的起始楼层和目的楼层进展分析,确定每个人进出电梯的挨次, 并打印输出。比方: 当前楼层是 4,构造体数组中共有 3 个人,A:7 3B:610 C:78; 则输出应当是: 当前楼层为 6,B 进入当前楼层为 7,C 进入当前楼层为 8,C 出去当前楼层为 10,B 出去当前楼层为 7,A 进入当前楼层为 3,A 出去2. 迷宫求解说明:求迷宫从入口到出口的路径,即从迷宫的入口动身,顺某一方向向前探究,假设能走通,则连续往前走;否则沿原路退
3、回,换一个方向连续探究,直到全部可能的通路都探究为止。题目难度:一般设计要求:给出迷宫的入口和出口及相关的通路,求出从入口到出口的路径。要求使用 C 语言编程,定义适宜的数据构造。最终,需要说明设计思想,同时给出能够运行的源程序, 并给出对应的程序流程图。设计提示:可以使用一个二维数组来表示迷宫,其中分别用1、0 表示通与不通;算法的根本思想是:假设当前位置“可通”,则纳入“当前路径”,并连续朝“下一位置”探究,即切换 “下一位置”为“当前位置”, 如此重复,到达出口;假设当前位置“不行通”,则应顺着“来向”退回到“前一通道块”,然后朝“来向”之外的其它方向探究。假设该通道块四周4 个方块均“
4、不行通”,则应从“当前路径”中删除该通道块。使用栈构造记录当前路径,当前位置入栈表示向前行,出栈则表示从当前位置退回。更多精彩,尽在大学生校园网 3. 学生运动会成绩数据库功能:学生运动会成绩数据库系统记录某校运动会上全部运开工程,各系获得的分数及排名的 状况,包括 50、100、200,400,1500 米,跳高,跳远,标枪,铅球铁饼等。进入系统后可以输入和修改某个工程的结果状况,可以按各系院编号输出总分;按总分排序;按男团体总 分排序 ;按系院编号查询;按工程编号查询;按女团体总分排序。分步实施:1) 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2) 完成最低要求:建立一
5、个文件,包括某个系,5 个工程的得分状况,能对文件中的信息进展扩大追加,修改和删除;3) 进一步要求:完成对多个系,多个工程的得分排序,以及完成系统查询功能。有兴趣的同学可以自己扩大系统功能。键盘输入:系院数目,男子工程数女子工程数,每工程取前三名,分别为 10,5,2 分要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。4. 哈夫曼树应用功能:1从终端读入字符集大小 n,以及 n 个字符和 n 个权值,建立哈夫曼树并将它存于文件 hfmTree 中
6、. 将已在内存中的哈夫曼树以直观的方式比方树显示在终端上; 2利用已经建好的哈夫曼树如不在内存,则从文件htmTree 中读入,对文件 ToBeTran 中的正文进展编码,然后将结果存入文件CodeFile 中,并输出结果,将文件 CodeFile 以紧凑格式先是在终端上, 每行 50 个代码。同时将此字符形式的编码文件写入文件CodePrint 中。3. 利用已建好的哈夫曼树将文件 CodeFile 中的代码进展译码,结果存入文件 TextFile 中,并输出结果。分步实施:1) 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2) 完成最低要求:完成功能 1;3) 进一步要求
7、:完成功能 2 和 3。有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。5. 图的遍历功能:实现图的深度优先, 广度优先遍历算法,并输出原图构造及遍历结果。分步实施:1) 初步完成总体设计,搭好框架;2) 完成最低要求:两种必需都要实现,写出画图的思路;3) 进一步要求:画出图的构造,有兴趣的同学可以进一步改进图的效果。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给
8、程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。6. n 维矩阵乘法:A B1功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b 的内容,并输出两个矩阵, 输出 ab1 结果。分步实施:1) 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2) 完成最低要求:建立一个文件,可完成2 维矩阵的状况;3) 一步要求:通过键盘输入维数n。有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能
9、运行起来,不能运行的程序是没有价值的。7. 数组应用功能: 依据行优先挨次将输入的数据建成4 维数组,再依据列优先挨次输出结果,给出任意处的元素值,并给出对应的一维数组中的序号。分步实施:1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:完成第一个功能;3. 进一步要求:进一步完成后续功能。有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。8 数组应用 2功能: 读入数组下标,求
10、出数组 A 靠边元素之和;求从A00开头的互不相邻的各元素之和;当m=n 时,分别求两条对角线上的元素之和,否则打印出m!=n 的信息。分步实施:1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:求出 2 维数组的功能;3. 进一步要求:完成 3 维以上数组的功能。有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。9n 元多项式乘法功能: 完成两个n 元多项式作乘法,给出明确的等
11、式形式。分步实施:1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:建立一个文件,实现两个一元二次多项式作乘法。3. 进一步要求:实现三元二次多项式的乘法。有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。10 集合运算功能: 使用链表来表示集合,完成集合的合并,求交集等操作。分步实施:1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:3.
12、进一步要求:要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案6 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。11 公园的导游图功能:给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最正确路线,使游客可以不重复地巡游各景点,最终回到出口出口就在入口旁边。分步实施:1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:建立一个文件,包括5 个景点状况,能完成遍历功能;3. 进一步要求:进一步扩大景点数目,画出景点
13、图,有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。12 商店存货治理系统功能:建立一商店存货治理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物。分步实施:1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2. 完成最低要求:建立一个文件,包括5 个种类的货物状况,能对商品信息进展扩大追加,修改和删除以及简洁的排序;3. 进一步要求:扩大商品数量,以及完成系统查询功能。有兴趣的同学
14、可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。13 汉诺威塔功能:编程序显示nn0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。开头时任选一个正整数做为报数上限m,从第一个人开头顺时针方向自 1 起挨次报数,报到m 是停顿报数,报m 的人出列,将他的密码作为的m 值,从他的下一个人开头重从 1 报数。如此下去,直到全部人全部出列为止。令n 最大值取 30。要求设计一个程序模拟此过程,求出出列编号序列。分步实施:4.
15、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;5. 完成最低要求:建立一个文件,包括某人5 个人的状况。6. 进一步要求:有兴趣的同学可以自己扩大系统功能。要求:1界面友好,函数功能要划分好2) 总体设计应画一流程图3) 程序要加必要的注释4) 要供给程序测试方案5) 程序肯定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。16用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码: “THIS PROGRAM IS MY FAVORITE”字符A B C D E F G H I J K L M频度64 13 22 32 103
16、 21 15 47 57 1 5 32 20字符N O P Q R S T U V W X Y Z频度57 63 15 1 48 51 80 23 8 18 1 16 117. 分词算法正向最大匹配分词算法说明: 何为分词?中文分词与其他的分词又有什么不同呢?分词就是将连续的字序列依据肯定的标准重组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段可以通过明显的分界符来简洁划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,但是在词这一层上,中文比之英文要简单的多、困难的多。正向最大匹配分词算法就是从左到右进展切词,以最大词组进展匹配。例
17、如:“中华人民共和国成立了。”这个词可以切分为“中华/人民/共和国/成立/了。”也可以切分成“中华 人民共和国/成立/了。”而后一种就是最大正向匹配算法了。题目难度:一般设计要求:利用 VC+、JAVA 之类有界面的编程工具进展编写。要求输入一篇文章, 在肯定的时间之内进展分词,并显示分词时间。并依据分词效果,提出改进方案。设计提示:词组数据库由教师给出,学生也可以自己添加词汇,学生建立数据的连接, 并进展分词匹配。18. 野人过河问题说明:野人过河问题属于人工智能学科中的一个经典问题,问题描述如下:有三个僧人和野人预备渡过一条河,但是只有一条船,而且船每次最多可以载两个人。现在他同在河的一边
18、,想渡过河去,条件是:在河的任何一边必需保证僧人的数目大于等于 野人的数目,否则野人就会把僧人吃掉,请给出渡河方案。题目难度:较难设计要求:模拟僧人和野人的渡河挨次,要求使用C 语言编程,定义适宜的数据构造。最终,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图。设计提示:先分析问题的初始状态和目标状态,假设河分为甲岸和乙岸: 初始状态:甲岸,3 野人,3 牧师;乙岸,0 野人,0 牧师;船停在甲岸,船上有 0 个人; 目标状态:甲岸,0 野人,0 牧师;乙岸,3 野人,3 牧师;船停在乙岸,船上有 0 个人;整个问题就抽象成了怎样从初始状态经中间的一系列状态到达目标状态。问
19、题状态的转变是通过划船渡河来引发的。考虑用什么样的数据构造和搜寻算法19. 运动会统计问题说明:参与运动会的n 个学校编号为 1n。竞赛分成m 个男子工程和w 个女子工程, 工程编号分别为 1m 和 m+1m+w。由于各工程参与人数差异较大,有些工程取前五名, 得分挨次为 7,5,3,2,1;还有些工程只取前三名,得分挨次为5,3,2假设编号为奇数的工程取前五名,编号为偶数的工程取前三名。写一个统计程序产生各种成绩单和得分 报表。题目难度:一般设计要求:要求使用用 C 语言编程实现,定义适宜的数据构造。最终,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图。完成的具体功能有:
20、1. 可以输入各个工程的前三名或前五名的成绩。2. 产生各学校的成绩单,内容包括学校编号、工程编号、选手姓名、名次、得分。3. 产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。设计提示:假设 n20,m30,w20,姓名长度不超过 20 个字符。每个工程完毕时,将其编号、类型符区分取前五名还是前三名输入,并按名次挨次输入运发动姓名、校名和成绩等。选择一种适宜的数据构造实现。20. 人鬼过河问题河的一边有三个人和三个鬼,河中有一小船,每次最多能乘坐 2 个人或鬼,而且至少要有一个人或鬼船才能行驶。请设计一种算法,把人和鬼都送到对岸。注:不管是在河边、船上, 假设人鬼数量一样
21、,则鬼和人能和谐相处,鬼不吃人,否则,鬼吃掉人。要求算法能给出整个运送过程,包括每次船行驶的方向是驶向对岸还是返回,船上的人和鬼数量。大学生校园网VvSchool.CN努力打造的学生最有用的网络平台!21. 循环节repeating cycle问题描述:求一个分数对应的十进制小数的循环节。我们定义一个小数的循环节是它的第一个最短的向右无限循环的数字串。下面是一些分数的循环节,循环节局部用括号括住,例如:分数十进制小数循环节循环节长度位数160.1(6)61570.(714285)714285612500.004(0)01输入:输入文件的每行包含两个正整数,第一个为分子,其次个为分母,它们之间用
22、一个空格隔开,这两个正整数值均不超过3000,输入以 00 完毕。输出:输出到屏幕。对应输入的每一行,有两行输出,其中第一行输出一个分数和它的 小数表示,其中小数由非循环节局部加上第一个消灭的循环节或者不大于50 位的小数, 其次行输出整个循环节的长度,如小数超过50 位仍未消灭循环节则认为循环节长度为0。输入样例: 输出样例:16160.1(6)57112505/7=0.(714285)0061/250=0.004(0)122. 拼字玩耍 (word crosses)拼字玩耍历史悠久,能熬炼人的思维和提高单词记忆量。在欧美报纸的版面中常常会见到。此题只是简洁地演示单组穿插词。所谓单组穿插词,
23、是指两个单词穿插放置,一个 水平放置,另一个垂直放置,穿插点是两个单词都共用一个字母,而且穿插点遵循穿插 靠前原则,即这公用的字母尽量在水平单词的前方,然后也尽量在垂直单词的上方。例 如:DEFER,PREFECT前一个为水平单词的穿插点是E,而PREFECT,EDFER 的穿插点是R。双穿插词是指有两组单组穿插词,它们的水平单词放在同一行。试编程将输入的每四个一组的单词尽可能组成双穿插词。输入:输入文件由假设干行组成,每行有四个单词,按挨次每两个为一组,每组第一个单 词为水平单词,每个单词由 1 到 10 个大写字母组成,单词之间用一个空格隔开。最终一行由一个“完毕。输出:输出文件由一系列双
24、穿插词组成,每个水平单词之间隔三个空格。假设不能构成双穿插词,则显示“Unable to make two crosses“。每组双穿插词间空一行。输入样例:AT PART RIGHT BUTPEANUT BANANA VACUUM GREEDY输出样例:B更多精彩,尽在大学生校园网 大学生校园网VvSchool.CN努力打造的学生最有用的网络平台!PUATRIGHT RTUnable to make two crosses23. 校园导游询问为来访的客人供给各种信息效劳1、根本要求:1) 设计大学城平面图,在校园景点选 10 个左右景点。以图中顶点表示大学城内各景点, 存放景点名称、代号、简
25、介等信息;以边表示路径,存放路径长度等有关信息。2) 为来访客人供给图中任意景点相关信息的查询。3) 为来访客人供给任意景点的问路查询,即查询任意两个景点之间的一条最短路径。 实现提示:一般状况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。顶点和边均含有相关信息。24. 十进制数与八进制数互换的实现要求: 承受相应的数据构造,实现十进制数到八进制数的转换.25. 大整数乘法的实现要求: 以数组这种数据构造来实现,整数最大允许的长度为 80 位.更多精彩,尽在大学生校园网 26. 较难模拟一种掷骰子玩耍有这样一种玩耍:4 个人A-D,每个人有4 个骰子,各拘束一个筒中摇匀后停顿。每个
26、人可以看到自己此时 4 个骰子的点数。由A 开头,依据自己骰子点数估量某个点数的总个数, 报两个数字:骰子个数和点数,如“4 个 3”,然后等待下家 B 报数;B 报出的数字中,骰子个数只能大于上家;如此重复;最终当某个人不再报数而叫“停”时,4 人均翻开摇筒。假设个数和点数恰与叫停者的上家所报相符,则上家胜;假设不相符,则叫停者胜。假设无 人叫停,则连续报数直至报出的数字为“16 个 6”时完毕。用 C 语言编程模拟这个过程。报数的步骤可由用户输入数据进展模拟。注:骰子,亦称色子,即一个质地均匀的正六面体,每面分别标有数字1-6,在玩耍中用于产生区间1,6内的随机整数。27. 较易 行人过街
27、红绿灯的手动掌握城市非繁华街道上有一种由行人手动掌握的过街红绿灯。无行人穿过大路时行人指示为红灯,汽车指示为绿灯,汽车能够连续地正常通过A 状态。当有人按下手动开关时,一段时间后注*行人指示为绿灯,汽车指示为红灯,汽车不能通过而行人能够穿过大路B 状态,且 B 状态只能持续一个指定的时间段。注*:当汽车连续通过A 状态的时间已超过某个给定的值,则按下开关后马上切换到 B 状态;假设按下开关时A 状态时间未到达给定值,则必需等待肯定时间后才能切换到B 状态,这个时间的长度可事先设定。编程模拟这种红绿灯的掌握。28. 循环赛日程表说明:设计一个满足以下要求的竞赛日程表: (1)每个选手必需与其他n
28、-1 个选手各赛一次; (2)每个选手一天只能赛一次;(3)循环赛一共进展n-1 天。题目难度:一般设计要求:请使用C 语言编程,设计一个有效的算法解决循环赛日程表问题。设计提示:按分治策略,将全部的选手分为两半,n 个选手的竞赛日程表就可以通过为 n/2 个选手设计的竞赛日程表来打算。递归地用对选手进展分割,直到只剩下 2 个选手时,竞赛日程表的制定就变得很简洁。这时只要让这2 个选手进展竞赛就可以了。29. 多边形玩耍说明:多边形玩耍是一个单人玩的玩耍,开头时有一个由 n 个顶点构成的多边形。每个顶点被赐予一个整数值,每条边被赐予一个运算符“+”或“*”。全部边依次用整数从 1 到 n 编
29、号。玩耍第 1 步,将一条边删除。随后n-1 步按以下方式操作:(1) 选择一条边E 以及由E 连接着的 2 个顶点V1 和V2;(2) 用一个的顶点取代边E 以及由E 连接着的 2 个顶点V1 和V2。将由顶点 V1 和V2 的整数值通过边E 上的运算得到的结果赐予顶点。最终,全部边都被删除,玩耍完毕。玩耍的得分就是所剩顶点上的整数值。题目难度:较难设计要求:请使用C 语言编程,设计一个有效的算法解决下述问题:对于给定的多边形,计算最高得分。设计提示:在所给多边形中,从顶点 i(1in)开头,长度为 j(链中有j 个顶点)的顺时针链p(i,j) 可表示为vi,opi+1,vi+j-1。假设这
30、条链的最终一次合并运算在opi+s处发生(1sj-1),则可在 opi+s处将链分割为 2 个子链p(i,s)和p(i+s,j-s)。设 m1 是对子链p(i,s)的任意一种合并方式得到的值,而 a 和 b 分别是在全部可能的合并中得到的最小值和最大值。m2 是 p(i+s,j-s)的任意一种合并方式得到的值,而c 和 d 分别是在全部可能的合并中得到的最小值和最大值。依此定义有am1b,cm2d(1) 当 opi+s=”+”时,明显有a+cmb+d换句话说,主链的最大值和最小值可由子链的最大值和最小值得到。30棋盘掩盖问题说明:在一个2k2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,
31、称该方格为一特别方格,且称该棋盘为一特别棋盘。在棋盘掩盖问题中,要用图示的4 种不同形态的L 型骨牌掩盖给定的特别棋盘上除特别方格以外的全部方格,且任何2 个 L 型骨牌不得重叠掩盖。题目难度:难设计要求:请使用C 语言编程,设计一个有效的算法解决棋盘掩盖问题。设计提示:当 k0 时,将 2k2k 棋盘分割为 4 个 2k-12k-1 子棋盘(a)所示。特别方格必位于 4 个较小子棋盘之一中,其余 3 个子棋盘中无特别方格。为了将这 3 个无特别方格的子棋盘转化为特别棋盘,可以用一个L 型骨牌掩盖这 3 个较小棋盘的会合处,如(b)所示,从而将原问题转化为 4 个较小规模的棋盘掩盖问题。递归地
32、使用这种分割,直至棋盘简化为棋盘11。(2) 当 opi+s=”*”时,有 minac,ad,bc,bdmmaxac,ad,bc,bd31. 魔方阵说明:把整数1 到 n2排成一个nn 方阵, 使方阵中的每一行, 每一列以及对角线上的数之和都一样。题目难度:一般设计要求:要求使用 C 语言编程,定义适宜的数据构造。最终,需要说明设计思想, 同时给出能够运行的源程序,并给出对应的程序流程图。设计提示:如n 为奇数, 魔方阵可按下述方法构成:(1) 把 1 填在第一行的正中间, 然后填入后续的数;(2) 假设数k 填在第i 行第j 列的格子中, 那么k+1 应填在它的左上方, 即第i-1 行第 j
33、-1 列的那个格子中, 假设左上方无格子,即:假设 i-1 为 0, 那么填在第n 行第 j-1 列的格子中; 假设 j-1 为 0, 那么填在第i-1 行第 n 列的格子中; 假设 i-1 和 j-1 都为 0, 那么填在第n 行第n 列的格子中。(3) 假设按(2)的方法找到的格子中已填过数了, 那么数k+1 改填在第k 个数的正下方。即填在第i+1 行和第j 列的那个格子中。编程序实现上述算法,并模拟显示其过程。32. 地图着色说明:地图上有不同国家不同区域,每个国家都与其他一些国家邻接。现要求对地图着色,使全部的国家与它的邻接的国家有不同的颜色。通常由四种颜色就已足够。题目难度:较难设
34、计要求:要求使用 C 语言编程,定义适宜的数据构造。最终,需要说明设计思想, 同时给出能够运行的源程序,并给出对应的程序流程图。设计提示:可实行摸索的方法逐步靠近最终解,即按某种模式生成一个局部解,检查 它是否合格。如为合格,在扩展这个局部解向最终解靠近,否则为不合格,不管如何扩展这个局部解都不会得到最终解。这时必需放弃已生成的局部解中的某些结果,“回朔”到从前的局部解,在生成一个局部解,直到获得最终解。这种算法称为回朔算法。以着色一个六个区域的地图为例。区域邻接关系区域邻接区域123456021340312456041236051360613450表中数据正是所需输入的数据, 可以用一个nn
35、 的矩阵来存放n 为区域数目。0 表示邻接区域的完毕。设着色的颜色次序为红、蓝、绿、黄。对于区域起首先着成红色。对于区域2,因与区域1 邻接,所以不能再着红色,而只能着其次种颜色,即蓝色。同理区域3 着绿色,区域4 着黄色,区域5 着蓝色,区域6 由于与区域 1、3、4 和 5 邻接,所以四种颜色都不适宜。这时,必需回溯到区域5,它不能是已着好的蓝色,也不能着蓝色的下一种颜色绿色,由于这会使它与区域 3 同色,再选下一种颜色, 即黄色,它与区域 1 和 3 不同色。所以区域 5 退去蓝色,改着黄色。此后,区域 6 可着蓝色。最终,得到的解为各区域的颜色依次为红、蓝、绿、黄、黄、蓝。承受递归算法
36、:区域编号以自然数编号 1nn 为区域数颜色可用枚举值 enum color red=1, blue, green, yellow; 算法描述为:Void colorarea(int j)/参数 j 为当前要着色的区域编号for(c=red; c=yellow; c+)if(区域 j 可着c 色)/即区域 j 的邻接区域都没有着过c 色if(j=n) prtmap;/输出结果else colorarea(j+1); /进一步着色下一个区域区域j 退去c 色33. 模拟人工发牌说明:用计算机模拟发牌程序。假设一副扑克牌有52 张,共 4 个玩家,编写程序统计出各玩家手里拿的牌的牌面牌面包括纸牌的
37、大小和花色。题目难度:一般设计要求:要求使用 C 语言编程,定义适宜的数据构造。最终,需要说明设计思想, 同时给出能够运行的源程序,并给出对应的程序流程图。设计提示:定义一个 4 行 13 列的整数类型的二维数组,每一行分别表示一种花色:黑桃、红桃、草花、方块。每一列分别表示A 到 K 共十三个牌点。数组各元素的初始值为 0,表示还没有发牌。然后给每个数组元素赐予 1 到 4 之间的随机数,表示这张牌随机地发给某个玩家。例如第一行第七列的元素,表示黑桃 7,其值为 2,表示这张牌发给了第 2 个玩家。依此类推。34. 搬山玩耍说明:设有 n 座山,计算机与人作为竞赛的双方,双方轮番搬山。规定每
38、次搬山的数目不能超过 k 座,谁搬最终一座谁输。玩耍开头时,计算机请人输入山的总数(n)和每次允许搬山的最大数目(k)。然后请人先开头,人输入了需要搬走的山的数目后,计算机马上输 出它搬多少座山,并提示尚余多少座山。双方轮番搬山直到最终一座山搬完为止。计算机显 示谁是赢家,并问人是否要连续竞赛。假设人不想玩了,可以输入山的总数为0,计算机便会告知人共完了几局,双方胜败如何。题目难度:较难设计要求:计算机请人输入山的总数(n)和每次允许搬山的最大数目(k)。然后请人先开 始,人输入了需要搬走的山的数目后,计算机马上输出它搬多少座山,并提示尚余多少座山。要求使用C 语言编程,定义适宜的数据构造。最
39、终,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图。设计提示:首先设计计算机参与玩耍的算法,计算机每次搬山时应遵循如下原则:(1) 当:剩余山的数目1=可移动的最大数k 时,计算机要移(剩余山的数目1)座, 以便将最终一座山留给人。(2) 对于任意正整数x, y,肯定有: 0=x%(y+1)=y因此,对于我们的问题来说,在有n 座山的状况下,计算机为了将最终一座山留给人,而且又要掌握每次搬山的数目不超过最大数k,它应搬山的数目要满足以下关系: 搬山数量当前所剩的山数1k+1假设算出结果为 0,即整除无余数,则规定只搬一座山,以防止冒进后发生问题。35. 关键路径的求解问题一
40、.问题的根本阐述:通常把打算、施工过程、生产流程、程序流程的都当成一个工程。除了很小的工程外、一般都把工程分为假设干个叫做“活动”的子工程。完成了这些“活动”的子工程,这个工程 就可以完成了。 通常我们用有向图表示一个工程。在这种有向图中,用顶点表示活动,用有向边 表示活动Vi 必需先于活动Vj 进展。假设在无有向环的带权有向图中用有向边表示一个工程中的各项活动 ACTIVITY,用有向边上的权值表示活动的持续时间DURATION,用顶点表示大事EVENT,则这种的有向图叫做用边表示活动的网络,简称 AOEactive on edges网络。 AOE 网络在某些工程估算方面格外有用。他可以使人
41、们了解:(1) :争论某个工程至少需要多少时间?(2) :那些活动是影响工程进度的关键?在 AOE 网络中,有些活动可以并行的进展。从源点到各个顶点,以至从源点到汇点的有向路径可能不止一条。这些路径的长度也可能不同。完成不同路径的活动所需的时间虽然不同,但只有各条路径上全部活动都完成了,这个工程才算完成。因此,完成整个工程所需的 时间取决于从源点到汇点的最长路径长度,即在这条路径上全部活动的持续时间之和。这条 路径长度就叫做关键路径critical path。二.:设计步骤:1: 以某一工程为蓝本,承受图的构造表示实际的工程打算的时间。2: 调查以分析和推测这个工程打算个阶段的时间。3: 用调
42、查的结果建立E 网Activity On Edge Network,即边表示活动的网络,并用图的形式表示。4: 用图来存储这些信息。5: 用CreateGraphic;函数建立AOE 图。6: 用SearchMapPath;函数求出最大路径,并打印出关键路径。7:编写代码8: 测试三. 设计代码:(要求用C 语言或JAVA 语言实现)36. 囚徒逆境的实际问题:一.根本问题阐述:有两个参与者和一个庄家。参与者每人有一式两张卡片,各印有“合作”和“背叛”。参与者各把一张卡片文字面朝下,放在庄家面前。文字面朝下排解了参与者知道对方选择的可能性。然后,庄家翻开两个参与者卡片,依据以下规章支付利益:一
43、人背叛、一人合作:背叛者得 5 分背叛诱惑,合作者 0 分受骗支付。二人都合作:各得 3 分合作酬劳。二人都背叛:各得 1 分背叛惩罚。二.求解(要求用C 语言或JAVA 语言)1. 每个人所能得分的全部状况及可得的最高分和最低分;2. 两个人能得分和的全部状况及最高分和最低分3. 比较相互背叛的及单独背叛,合作获分比背叛高还是低37. 用 C 语言或 JAVA 语言,设计一个学生的学籍治理系统;要求:1.要有对学生的各信息进展各种操作的功能,比方添加删除学生等等2. 设计过程中会用到排序的算法,请你总结各种经典的排序算法,3. 设计过程中会用到查找得法,请你总结各种经典的查找算法4. 写出具体的设计过程37. 查找算法集锦说明:查找,依据给定的某个值,在查找表已经排好序中确定一个其关键字等于给定的记录或数据元素。假设表中存在这样的一个记录,则称查找是成功的,此时查找的结果为 给出整个记录的信息,或指示该记录在查找表中的位置;假设表中不存在关键字等于给定值的 记录,则称查找不成功。查找算法
限制150内