数据结构课程设计题527.docx
- 文档编号:9989775
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:12
- 大小:22.51KB
数据结构课程设计题527.docx
《数据结构课程设计题527.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计题527.docx(12页珍藏版)》请在冰豆网上搜索。
数据结构课程设计题527
1、洗牌问题
【问题】
设2n张牌分别标记为1,2,…,n,n+l,…,2n,初始时这2n张牌按其标号从小到大排列。
经一次洗牌后,原来的排列顺序变成n+l,l,n+2,2,··,,2n,n。
即前n张牌被放到偶数位置2,4,·,·,2n,而后n张牌被放到奇数位置1,3,…,2n-l。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题:
至少经过多少次洗牌可以恢复初始状态?
(3)分析算法的时间性能。
2、八数码问题
【问题】
八方块移动游戏要求从一个含8个数字(用1-8表示)的方块以及一个空格方块(用0表示)的3x3矩阵的起始状态开始,不断移动该空 格方块以使其和相邻的方块互换,直至达到所定义的目标状态。
空格方块在中间位置时有上、下、左、右4个方向可移动,在四个角落上有2个方向可移动,在其他 位置上有3个方向可移动。
例如,假设一个3x3矩阵的初始状态为:
8 0 3
2 1 4
7 6 5
目标状态为:
1 2 3
8 0 4
7 6 5
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题:
找到从八方块的某初试状态到某目标状态的所有可能路径中的最短路径。
(3)分析算法的时间性能。
【提示】广度优先搜索
3、两两相连的房间问题
【问题】
一所奇怪的房子,这所房子里有n个房间,每个房间里有一些门通向别的房间,可是这些门十分奇怪,它们只能从房间a开向房间b,也就是说,一扇从a开向b的门是不能让一个人从b房间走到a房间的。
你能计算一下任意两个房间之间都互相相通吗?
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
4、贴瓷砖问题
【问题】
佳佳是一名瓦匠,这天他正在帮别人贴一条走廊上的瓷砖,他的瓷砖的尺寸都是1*2小矩形,走廊的尺寸是2*N的大矩形,佳佳的问题是:
他的瓷砖一共有多少种贴法?
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;要求:
输入的第一行是一个整数T,表示测试数据的组数,接下来T行,每行一个整数N,表示走廊的尺寸。
对每个输入数据,输出瓷砖的贴法种数。
(3)分析算法的时间性能。
5、素数环问题
【问题】
一个环由n个圆组成,如下图,将1..n个这n个自然数分别放入这个环中,要求每相邻两个圆里的数字之和为素数。
注意:
第一个圆里的数字总是为1。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
【提示】树结构,回溯法
6、24点问题
【问题】
输入4个1-13(在扑克牌里用A代替1,J代替11,Q代替12,K代替13)之间的自然数作为操作数,对这4个操作数进行适当的算术运算,判断运算结果是否等于24。
能输出YES,不能输出NO。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
【提示】枚举法列出字符串表达式,用栈结构计算表达式的值
7、最小回文代价问题
【问题】
回文是指一个对称的字符串,代表这个串从左往右读和从右往左读是一样的。
给定一个字符串,往其中插入最少的字符,得到一个回文串,求最小插入字符数。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
【提示】计算原字符串与逆序字符串LCS(最长公共子序列长度),用字符串长度减去LCS长度。
8、删除多余括号问题
【问题】
键盘输入一个含有括号的四则运算表达式,可能含有多余的括号,编程整理该表达式,去掉所有多余的括号,原表达式中所有变量和运算符相对位置保持不变,并保持与原表达式等价。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
9、分数变小数问题
【问题】
写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。
如果它的小数形式存在循环节,要将其用括号括起来。
例如:
1/3=.3333…表示为.(3),又如41/333=.123123123…表示为.(123)。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
【提示】可以模仿手算除法的形式,重复的进行求商和余数的运算,直到余数为0或出现循环节位置
10、括号对问题
【问题】
由{},[],()三种括号对构成的字串,括号必须配对,可以嵌套,但不得交叉。
并且()内不能出现{}和[],[]内不能出现{};定义其深度为最大嵌套层数;给定三种括号的对数L1,L2,L3及深度D,求满足条件的字串的总数;0≤L1,L3,L3≤10,0≤D≤30。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
【提示】
例如:
()(())[]深度为2;{()[()]}深度为3;{{[[(())]]}}深度为6;()([]){}不合法;{([())]}不合法,可用递归算法
11、判断是否为树结构问题
【问题】
“树”是一种很常用的数据结构,一个“树”结构可以为空,或是由单个节点或通过有向边连接而成的多个节点组成,同时它还必须满足以下条件。
(1)其中有一个节点,没有有向边指向它,它被称为“根”节点;
(2)有且仅有一条边指向“树”结构中除根以外的其他节点;
(3)有一个唯一的从根节点指向每个节点的有向边的序列。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;要求:
输入包含多组描述,输入末尾由两个负数结束。
每一组测试数据由许多“对”数组成,并由一对0作为结尾。
每一对数表示一条边,第一个数表示有向边的起点,第二个数表示有向边的终点。
节点编号总是大于0的。
节点总数不超过2000,对于每一组描述,如果它是一个“树”结构,则输出“Casekisatree”,反之输出“Casekisnotatree”,其中k是所给出描述的编号;
(3)分析算法的时间性能。
12、数字三角形问题
【问题】
如图所示出的一个数字三角形宝塔。
数字三角形中的数字为不超过100的正整数。
现规定从最顶层走到最底层,每一步可沿左斜线向下或右斜线向下走。
假设三角形行数<=100,设计一个算法,找到从最顶层走到最底层的一条路径,使得沿着该路径所经过的数字综合最大,输出最大值。
7
38
810
2774
55265
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;要求:
输入第一行是三角形的行数N,以后的N行分别是从最顶层到最底层的每一层中的数字。
输出最佳路径所对应的最大值。
(3)分析算法的时间性能。
【提示】
如果得到一条由顶至底的某处的一条最佳路径,那么对于该路径上的每一个中间点来说,由顶至该中间点的路径所经过的数字和也为最大。
若行数为n,则可把问题看作一个n-1个阶段的决策问题。
从始点出发,依顺向求出第一阶段、第二阶段,……,第n-1阶段中各决策点至始点的最佳路径,最终求出始点到终点的最佳路径。
13、机器狗问题
【问题】
新一代机器狗(一种通过网络在计算机之间传播的病毒)刚刚被研制出来,它通过网线从一台机转移到另一台机,并破坏掉它所经过的网线(网线被破坏后它自己也不能再次经过),这种机器狗只能通过计算机进入网络。
现有一个网络布局的无向图,包括n台计算机和m条网线,想要该网络彻底瘫痪至少需要放出多少条机器狗。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;要求:
输入第一行为两个正整数n,m(1<=n<=1000)),以下m行每行2个数a,b(a!
=b)表示a,b两点之间有一条边相连(两点之间最多有一条边相连)输入00结束;
(3)分析算法的时间性能。
14、国王和骑士问题
【问题】
初始状态:
一个国王和N个骑士分布在8*8的棋盘上0<=N<=63
目标状态:
国王和所有的骑士走到同一个格子里
游戏规则:
在一次移动中,国王可以走到相邻的八个格子里;骑士可以走八个方向的“日”字;国王和某个骑士相遇后,可以由骑士带着移动
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题:
用最少的总移动步数达到目标状态;
(3)分析算法的时间性能。
15、学生搭配问题
【问题】
一班有m个女生,有n个男生(m不等于n)。
现要开一个舞会,男女生分别编号坐在舞池的两边的椅子上,每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴。
【要求】
请设计一系统模拟动态地显示出上述过程,要求如下:
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)输出每曲配对情况
(3)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况,至少求出K的两个值。
(4)分析算法的时间性能。
【提示】 用队列来解决比较方便.
16、马拦过河卒问题
【问题】
棋盘上A点有一个过河卒,需要走到目标B点。
卒行走的规则:
可以向下、或者向右。
同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。
因此称之为“马拦过河卒”。
棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过13的整数),同样马的位置坐标是需要给出的。
要求计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
17、蛇形矩阵问题
【问题】
蛇形矩阵是1到m的自然数的某种特定排列。
形似一条蛇沿对角线位置自下而上行进增长。
现求前n行蛇形矩阵的排列方式。
要求输入一个正整数N,输出一个N行的蛇形矩阵。
如:
输入为4,输出为:
1 3 4 10
2 5 9 11
6 8 12 15
7 13 14 16
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法解决问题;
(3)分析算法的时间性能。
18、Life游戏问题
【问题】
由数学家John.H.Conway发明的游戏Life,试图模拟一个有机物群体的生命发展。
考虑一个方形的单元阵列,每个单元可能包含一个有机物。
如果这个阵列可以看作所有方向都可以无限延伸,那么每个单元有8个邻居,即8个包围着它的单元,对于有机物的每一代,出生和死亡符合以下规则:
(1)一个有机物可以出生在任何一个具有3个邻居的空单元中;
(2)如果一个有机物少于2个邻居,那么它将因为隔绝而死亡;
(3)如果一个有机物多于3个邻居,那么它将因为拥挤而死亡;
(4)其他所有有机物将存活
【要求】
(1)应用“数据结构与算法”课程知识建立该问题的数据结构模型;
(2)编写算法模拟一个有机物群体的生命发展;要求:
输出第1行为一整数n,代表一个NxN的区域;第2至n+1行为一个NxN的矩阵,描述了有机物第一代的生存情况,其中#代表空单元,大写的O代表有机物;
(3)分析算法的时间性能。
19、运动会分数统计问题
【问题】
参加运动会有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)编写算法解决问题:
1)可以输入各个项目的前三名或前五名的成绩;
2)能统计各学校总分,
3)可以按学校编号或名称、学校总分、男女团体总分排序输出;
4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询
6)规定:
输入数据形式和范围:
可以输入学校的名称,运动项目的名称
输出形式:
有合理的提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
20、哈夫曼编码/译码器问题
【问题】
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理“要求”中项目,直到选择退出为止。
【要求】
(1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)
(2)分别采用动态和静态存储结构
(3)从键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;
(4)利用建好的哈夫曼树生成哈夫曼编码;
(5)输出编码;
设字符集及频度如下:
字符:
空格ABCDEFGHIJKLM,频度分别为:
1866413223210321154757153220
字符:
NOPQRSTUVWXYZ,频度分别为:
5763151485180238181161
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 527