ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:35.15KB ,
资源ID:12182035      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12182035.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构编程题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构编程题.docx

1、数据结构编程题第4周 二叉树基础4-2:文本二叉树总时间限制: 1000ms存限制: 65536kB描述如上图,一棵每个节点都是一个字母,且字母互不一样的二叉树,可以用以下若干行文本表示:A-B-*-C-D-E-*-F在这若干行文本中:1) 每个字母代表一个节点。该字母在文本中是第几行,就称该节点的行号是几。根在第1行2) 每个字母左边的-字符的个数代表该结点在树中的层次(树根位于第0层)3) 若某第 i 层的非根节点在文本中位于第n行,则其父节点必然是第 i-1 层的节点中,行号小于n,且行号与n的差最小的那个4) 若某文本中位于第n行的节点(层次是i) 有两个子节点,则第n+1行就是其左子

2、节点,右子节点是n+1行以下第一个层次为i+1的节点5) 若某第 i 层的节点在文本中位于第n行,且其没有左子节点而有右子节点,那么它的下一行就是 i+1个- 字符再加上一个 * 给出一棵树的文本表示法,要求输出该数的前序、后序、中序遍历结果输入第一行是树的数目 n接下来是n棵树,每棵树以0结尾。0不是树的一部分每棵树不超过100个节点输出对每棵树,分三行先后输出其前序、后序、中序遍历结果两棵树之间以空行分隔样例输入2A-B-*-C-D-E-*-F0A-B-C0样例输出ABCDEFCBFEDABCAEFDABCBCABAC4-3:由中根序列和后根序列重建二叉树总时间限制: 500ms存限制:

3、65535kB描述我们知道如何按照三种深度优先次序来周游一棵二叉树,来得到中根序列、前根序列和后根序列。反过来,如果给定二叉树的中根序列和后根序列,或者给定中根序列和前根序列,可以重建一二叉树。本题输入一棵二叉树的中根序列和后根序列,要求在存中重建二叉树,最后输出这棵二叉树的前根序列。用不同的整数来唯一标识二叉树的每一个结点,下面的二叉树中根序列是9 5 32 67后根序列9 32 67 5前根序列5 9 67 32输入两行。第一行是二叉树的中根序列,第二行是后根序列。每个数字表示的结点之间用空格隔开。结点数字围065535。暂不必考虑不合理的输入数据。输出一行。由输入中的中根序列和后根序列重

4、建的二叉树的前根序列。每个数字表示的结点之间用空格隔开。样例输入9 5 32 679 32 67 5样例输出5 9 67 324-4:表达式表达式树表达式求值总时间限制: 1000ms存限制: 65535kB描述众所周知,任何一个表达式,都可以用一棵表达式树来表示。例如,表达式a+b*c,可以表示为如下的表达式树: + / a * / b c现在,给你一个中缀表达式,这个中缀表达式用变量来表示(不含数字),请你将这个中缀表达式用表达式二叉树的形式输出出来。输入输入分为三个部分。第一部分为一行,即中缀表达式。中缀表达式可能含有小写字母代表变量(a-z),也可能含有运算符(+、-、*、/、小括号)

5、,不含有数字,也不含有空格。第二部分为一个整数n,表示中缀表达式的变量数。第三部分有n行,每行格式为Cx,C为变量的字符,x为该变量的值。输出输出分为三个部分,第一个部分为该表达式的逆波兰式,即该表达式树的后根遍历结果。占一行。第二部分为表达式树的显示,如样例输出所示。如果该二叉树是一棵满二叉树,则最底部的叶子结点,分别占据横坐标的第1、3、5、7个位置(最左边的坐标是1),然后它们的父结点的横坐标,在两个子结点的中间。如果不是满二叉树,则没有结点的地方,用空格填充(但请略去所有的行末空格)。每一行父结点与子结点中隔开一行,用斜杠(/)与反斜杠()来表示树的关系。/出现的横坐标位置为父结点的横

6、坐标偏左一格,出现的横坐标位置为父结点的横坐标偏右一格。也就是说,如果树高为m,则输出就有2m-1行。第三部分为一个整数,表示将值代入变量之后,该中缀表达式的值。需要注意的一点是,除法代表整除运算,即舍弃小数点后的部分。同时,测试数据保证不会出现除以0的现象。样例输入a+b*c3a 2b 7c 5样例输出abc*+ + / a * / b c37第5周 二叉树应用5-1:实现堆结构总时间限制: 3000ms存限制: 65535kB描述定义一个数组,初始化为空。在数组上执行两种操作:1、增添1个元素,把1个新的元素放入数组。2、输出并删除数组中最小的数。使用堆结构实现上述功能的高效算法。输入第一

7、行输入一个整数t,代表测试数据的组数。对于每组测试数据,第一行输入一个整数n,代表操作的次数。每次操作首先输入一个整数type。当type=1,增添操作,接着输入一个整数u,代表要插入的元素。当type=2,输出删除操作,输出并删除数组中最小的元素。1=n=100000。输出每次删除操作输出被删除的数字。样例输入251 11 21 32241 51 11 72样例输出121提示每组测试数据的复杂度为O(nlgn)的算法才能通过本次,否则会返回TLE(超时)需要使用最小堆结构来实现本题的算法5-2:二叉搜索树总时间限制: 1000ms存限制: 1024kB描述 二叉搜索树在动态查表中有特别的用处

8、,一个无序序列可以通过构造一棵二叉搜索树变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。每次插入的新的结点都是二叉搜索树上新的叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的指针,由空变为非空即可。 这里,我们想探究二叉树的建立和序列输出。输入只有一行,包含若干个数字,中间用空格隔开。(数字可能会有重复)输出输出一行,对输入数字建立二叉搜索树后进行前序周游的结果。样例输入41 467 334 500 169 724 478 358 962 464 705 145 281 827 961 491 995 942 827 436 样例输出41 467 334 169 1

9、45 281 358 464 436 500 478 491 724 705 962 827 961 942 9955-3:Huffman编码树总时间限制: 1000ms存限制: 65535kB描述构造一个具有n个外部节点的扩充二叉树,每个外部节点Ki有一个Wi对应,作为该外部节点的权。使得这个扩充二叉树的叶节点带权外部路径长度总和最小: Min( W1 * L1 + W2 * L2 + W3 * L3 + + Wn * Ln)Wi:每个节点的权值。Li:根节点到第i个外部叶子节点的距离。编程计算最小外部路径长度总和。输入第一行输入一个整数t,代表测试数据的组数。对于每组测试数据,第一行输入一

10、个整数n,外部节点的个数。第二行输入n个整数,代表各个外部节点的权值。2=N 1 / 4 5 2 / 4 3 5现在请你将一些一般的树用这种方法转换为二叉树,并输出转换前和转换后树的高度。输入输入包括多行,最后一行以一个#表示结束。每行是一个由“u”和“d”组成的字符串,表示一棵树的深度优先搜索信息。比如,dudduduudu可以用来表示上文中的左树,因为搜索过程为:0 Down to 1 Up to 0 Down to 2 Down to 4 Up to 2 Down to 5 Up to 2 Up to 0 Down to 3 Up to 0。你可以认为每棵树的结点数至少为2,并且不超过1

11、0000。输出对于每棵树,按如下格式输出转换前和转换后树的高度:Tree t: h1 = h2其中t是树的编号(从1开始),h1是转换前树的高度,h2是转换后树的高度。样例输入dudduduududdddduuuuudddduduuuudddduuduuu#样例输出Tree 1: 2 = 4Tree 2: 5 = 5Tree 3: 4 = 5Tree 4: 4 = 46-3:信仰总时间限制: 5000ms存限制: 65536kB描述世界上有许多,你感兴趣的是你学校里的同学信仰多少种。你的学校有n名学生(0 n = 50000),你不太可能询问每个人的信仰,因为他们不太愿意透露。但是当你同时找到

12、2名学生,他们却愿意告诉你他们是否信仰同一,你可以通过很多这样的询问估算学校里的数目的上限。你可以认为每名学生只会信仰最多一种。输入输入包括多组数据。每组数据的第一行包括n和m,0 = m = n(n-1)/2,其后m行每行包括两个数字i和j,表示学生i和学生j信仰同一,学生被标号为1至n。输入以一行 n = m = 0 作为结束。输出对于每组数据,先输出它的编号(从1开始),接着输出学生信仰的不同的数目上限。样例输入10 91 21 31 41 51 61 71 81 91 1010 42 34 54 85 80 0样例输出Case 1: 1Case 2: 76-4:总时间限制: 1000m

13、s存限制: 65536kB描述给你一些,请判断它们是否是一致的,即是否有某个是另一个的前缀。比如:Emergency 911Alice 97 625 999Bob 91 12 54 26在这个例子中,我们不可能拨通Bob的,因为Emergency的是它的前缀,当拨打Bob的时会先接通Emergency,所以这些不是一致的。输入第一行是一个整数t,1 t 40,表示测试数据的数目。每个测试样例的第一行是一个整数n,1 n 10000,其后n行每行是一个不超过10位的。输出对于每个测试数据,如果是一致的输出“YES”,如果不是输出“NO”。样例输入2391197625999911254265113

14、123401234401234598346样例输出NOYES第7周 图7-1:我爱北大总时间限制: 1000ms存限制: 65535kB描述“红楼飞雪,一时英杰”耳边传来了那熟悉的歌声。而这,只怕是我最后一次听到这个声音了。想当年,我们曾经怀着豪情壮志,许下心愿,走过静园,走过一体,走过未名湖畔的每个角落。想当年,我们也曾慷慨高歌,瞻仰与科学,瞻仰博雅塔顶,那百年之前的遗韵。没错,我爱北大,我爱这个校园。然而,从当我们穿上学位服的那一刻起,这个校园,就再也不属于我。它只属于往事,属于我的回忆。没错,这,是我在北大的最后一日。此时,此景,此生,此世,将刻骨难忘。再也没有了图书馆自习的各种纷纭,再

15、也没有了运动场上的挥汗如雨,有的,只是心中永远的不舍,与牵挂。夜,已深。人,却不愿离去。天边有一颗流星划过,是那般静,宁谧。忍不住不回头,我的眼边,有泪光,划过。这时候,突然有一位路人甲从你身旁出现,问你:从XX到XX怎么走?索性,就让我再爱你一次。因为,北大永远在你心中。北大的地图,永远在你的心中。轻手挥扬,不带走一分云彩。输入输入分为三个部分。第一个部分有P+1行,第一行为一个整数P,之后的P行表示北大的地点。第二个部分有Q+1行,第一行为一个整数Q,之后的Q行每行分别为两个字符串与一个整数,表示这两点有直线的道路,并显示二者之间的矩离(单位为米)。第三个部分有R+1行,第一行为一个整数R

16、,之后的R行每行为两个字符串,表示需要求的路线。p30,Q50,R(矩离)-相隔样例输入6XueYiShiTangCanYinZhongXinXueWuShiTangXueYiXiaoBaiFangBaiNianJiangTangGongHangQuKuanJi6XueYiShiTang CanYinZhongXin 80XueWuShiTang CanYinZhongXin 40XueYiShiTang XueYiXiaoBaiFang 35XueYiXiaoBaiFang XueWuShiTang 85CanYinZhongXin GongHangQuKuanJi 60GongHangQu

17、KuanJi BaiNianJiangTang 351XueYiXiaoBaiFang BaiNianJiangTang样例输出XueYiXiaoBaiFang-(35)-XueYiShiTang-(80)-CanYinZhongXin-(60)-GongHangQuKuanJi-(35)-BaiNianJiangTang提示很O疼的一道题。说出不少伤感事啊。两个最短路的算法都是可以用的,可以视情况选择你习惯的那个算法。7-2:宝昌县长要修路总时间限制: 1000ms存限制: 10000kB描述宝昌县长意气风发,他决定整修之前县里的道路。县里的道路很多,但维护费用昂贵。具体如图A所示。线段上面

18、的数据表示两个节点之间的所需要的维修费用,现在需要对乡村进行道路优化,最基本的要将所有的村庄节点都要联通起来,并且要求每月的维护费用最小。比如优化后的图如B所示。输入第一行只包含一个表示村庄个数的数n,n不大于26,并且这n个村庄是由大写字母表里的前n个字母表示。接下来的n-1行是由字母表的前n-1个字母开头。最后一个村庄表示的字母不用输入。对于每一行,以每个村庄表示的字母开头,然后后面跟着一个数字,表示有多少条道路可以从这个村到后面字母表中的村庄。如果k是大于0,表示该行后面会表示k条道路的k个数据。每条道路的数据是由表示连接到另一端村庄的字母和每月维修该道路的花费组成。维修费用是正整数的并

19、且小于100。该行的所有数据字段分隔单一空白。该公路网将始终连接所有的村庄。该公路网将永远不会超过75条道路。没有任何一个村庄会有超过15条的道路连接到其他村庄(之前或之后的字母)。在下面的示例输入,数据是与上面的地图相一致的。输出输出是一个整数,表示每个数据集中每月维持道路系统连接到所有村庄所花费的最低成本。样例输入9A 2 B 12 I 25B 3 C 10 H 40 I 8C 2 D 18 G 55D 1 E 44E 2 F 60 G 38F 0G 1 H 35H 1 I 35样例输出216提示考虑看成最小生成树问题,注意输入表示。7-3:拓扑排序总时间限制: 10000ms存限制: 1

20、000kB描述给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前输入若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号输出若干个空格隔开的顶点构成的序列(用小写字母)样例输入6 81 21 31 43 23 54 56 46 5样例输出v1 v3 v2 v6 v4 v57-4:地震之后总时间限制: 1000ms存限制: 130000kB描述 2008年地震之后,坚强县受灾严重,该县通信线路也收到了致命的打击,县总部为了能够与时的向各村的发送消息,命令小强去解决一下这个问题。 小强经过调查发现,为了能够快速的实

21、现通信,当务之急是能够建立起一条从总部可以向各个村单向发送信息的通信系统。由于灾后情况紧急,不是每一个村之间都能够快速的建立起通信线路,只有有限的村比如村A和村B间可以建立单向的从A向B发送信息的通信线路,小强现在的问题就是要找出一个合适的方案,使从总部发送出的信息能够通到各村,而用的总的通信线路是最短的(毕竟情况危急,物质短缺)。输入输入包括多组的测试数据。对于每一组测试数据:1、第一行包括两个整数N(1=N=100),M(M=10000),N表示通信网络中村子的数量,M表示在这些村子中,可以有M条通信线路建起来。2、接下来N行,每行两个整数xi,yi,代表着这个村子的X轴,Y轴的坐标(xi,yi)3、接下来M行,每行两个整数c1(1=c1=N),c2(1=c2=N),代表着从村c1到村c2可以建一个单向线路。注:两村之间的直线段距离(通信线路长度),即为两点间的欧式距离。县总部所在的村假设都在编号为1的村。输入以文件终止为结束。输出对于每一组的测试数据,输出完全的一行,值为最短的总长度,结果保留两位小数。如果不能建立一个单向的临时网络,输出NO.样例输入4 63 64 63 47 201 21 32 33 43 13 24 30 01 01 11 21 34 12 3样例输出19.49NO

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1