![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Italink
瞳閉 & 心開
展开
-
结构与算法 7-53 两个有序序列的中位数 (非排序 and 减治法)
题目链接:https://pintia.cn/problem-sets/15/problems/30017-53两个有序序列的中位数(25分)已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。输入格式:输入分三行...原创 2019-12-03 14:01:44 · 523 阅读 · 0 评论 -
结构与算法 7-41 PAT排名汇总 (精简60行)
题目链接:https://pintia.cn/problem-sets/15/problems/8887-41PAT排名汇总(25分)计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www...原创 2019-12-03 13:07:33 · 270 阅读 · 0 评论 -
结构与算法 7-40 奥运排行榜 (60行精简 lambda的运用)
题目链接:https://pintia.cn/problem-sets/15/problems/8677-40奥运排行榜(25分)每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同。比如中国金牌总数列第一的时候,中国媒体就公布“金牌榜”;而美国的奖牌总数第一,于是美国媒体就公布“奖牌榜”。如果人口少的国家公布一个“国民人均奖牌榜”,说不定非洲的国家会...原创 2019-12-03 12:33:45 · 568 阅读 · 0 评论 -
结构与算法 7-38 寻找大富翁 (优先队列24行)
7-38寻找大富翁(25分)胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。输...原创 2019-12-02 22:33:15 · 168 阅读 · 0 评论 -
结构与算法 7-37 模拟EXCEL排序 (25 分)
7-37模拟EXCEL排序(25分)Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。输入格式:输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指定排序的列号。之后有N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性...原创 2019-12-02 22:21:33 · 1142 阅读 · 0 评论 -
结构与算法 7-39 魔法优惠券 (25 分)
7-39魔法优惠券(25分)在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)例如,给定一组优惠劵,面值分别为1...原创 2019-11-11 11:24:01 · 212 阅读 · 0 评论 -
结构与算法 7-18 银行业务队列简单模拟 (25 分)
7-18银行业务队列简单模拟(25分)设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整数,其中第1个数字N(≤10...原创 2019-11-11 11:00:04 · 515 阅读 · 0 评论 -
结构与算法7-34 任务调度的合理性 (dfs)
7-34任务调度的合理性(25分)假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课...原创 2019-11-10 14:42:39 · 518 阅读 · 0 评论 -
结构与算法 7-33 地下迷宫探索 (30行精简)
7-33地下迷宫探索(30分)地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为内容。假设有一个地下通道迷宫,它的通道...原创 2019-11-10 14:09:38 · 197 阅读 · 0 评论 -
结构与算法 7-32 哥尼斯堡的“七桥问题” (25 分)
7-32哥尼斯堡的“七桥问题”(25分)哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以...原创 2019-11-10 13:29:37 · 1235 阅读 · 0 评论 -
结构与算法 7-31 笛卡尔树 (25 分)(50行精简)
7-31笛卡尔树(25分)笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。输入格式:输入首先给出正整数N(≤1000),为树...原创 2019-11-10 13:10:42 · 434 阅读 · 0 评论 -
结构与算法 7-30 目录树 (40行精简)
7-30目录树(30分)在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。输入格式:输入首先给出正整数N(≤104),表示ZIP归档文件中的文件和目录的数量。随后N行,每行有如下格式的文件或目录的相对路径和名称(每行不超过260个字符)...原创 2019-11-09 23:13:00 · 351 阅读 · 0 评论 -
结构与算法 7-29 修理牧场 (25 分)(20行精简)
7-29修理牧场(25分)农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头...原创 2019-11-09 22:36:38 · 149 阅读 · 0 评论 -
结构与算法 7-26 Windows消息队列 (25 分)
7-26Windows消息队列(25分)消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输入首先给出正整数...原创 2019-11-09 22:21:02 · 442 阅读 · 0 评论 -
结构与算法 7-25 朋友圈 (25 分)(并查集)
7-25朋友圈(25分)某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学...原创 2019-11-09 22:10:15 · 1137 阅读 · 0 评论 -
结构与算法 7-24 树种统计 (25 分)
随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。...原创 2019-11-09 21:56:20 · 589 阅读 · 0 评论 -
结构与算法 7-23 还原二叉树 (25 分)(30行精简 队列构造)
7-23还原二叉树(25分)给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:...原创 2019-11-09 21:46:27 · 451 阅读 · 0 评论 -
结构与算法 7-21 求前缀表达式的值 (30行精简)
7-21求前缀表达式的值(25分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分...原创 2019-09-26 20:07:58 · 238 阅读 · 0 评论 -
结构与算法 7-22 堆栈模拟队列 (40 行精简)
7-22堆栈模拟队列(25分)设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0; int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0; void Push(Stack S, ElementType item ):...原创 2019-09-26 19:19:43 · 119 阅读 · 0 评论 -
结构与算法 7-20 表达式转换 (测试点分析)
7-20表达式转换(25分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号...原创 2019-09-24 15:17:34 · 966 阅读 · 1 评论 -
结构与算法 7-16 一元多项式求导 (测试点分析)
7-16一元多项式求导(20分)设计函数求一元多项式的导数。输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。输入样例:3 4 -5 2 6 1 -2 0输出样例:12 3 -10 1 6 0...原创 2019-09-24 13:22:31 · 266 阅读 · 0 评论 -
黑白迷宫问题——深度优先搜索算法
2021年,九月,小w发现自己位于一个巨大的由黑格和白格组成的n行m列的迷宫中。小w只能从白格走到黑格或从黑格走到白格,小w找到了ljf,她想知道自己从每一个格子出发不回头可以走多少个格子。但是ljf忙于在ioi中虐场,把问题留给了你。注意:原题是可以回头,属于连通图问题,这个题目是我把题意给理解错了,只好将错就错...输入格式:第一行:两个整数 n、m接下来n行m列描...原创 2018-11-03 18:11:12 · 449 阅读 · 0 评论 -
图解—由两种遍历方式建立二叉树
给你一个后序序列,你能想到什么?最后一个元素是根结点,的确是这样的,先序亦相似。那么看到中序序列呢?似乎并不能看出什么,但你一定知道,根节点的左子树在中序遍历中一定在根节点的左边,右子树在其右边。那么知道这些之后,可以干什么呢?知道这些,你已经可以说一句狂话:如果能给我中序遍历和其他一种遍历,我能确定出根结点,还有它的左右子树!那么还是不能得到完整的树结构啊?其实你已经回答了既...原创 2019-03-28 14:30:11 · 545 阅读 · 0 评论 -
PAT结构与算法7-8 哈利·波特的考试 (30行精简 & 弗洛伊德算法)
7-8哈利·波特的考试(25分)哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。...原创 2019-08-19 12:18:25 · 177 阅读 · 0 评论 -
PAT结构与算法7-12 排序 (10行精简 & multiset)
7-12排序(25分)给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素; 数据2:11个不相同的整数,测试基本正确性; 数据3:103个随机整数; 数据4:104个随机整数; 数据5:105个随机整数; 数据6:105个顺序整数; 数据7:105个逆序整数;...原创 2019-08-19 13:45:25 · 135 阅读 · 0 评论 -
PAT结构与算法7-13 统计工龄
7-13统计工龄(20分)给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。输入样例:810 2 0 5 7 2...原创 2019-08-19 13:57:17 · 390 阅读 · 0 评论 -
PAT结构与算法7-15 QQ帐户的申请与登陆
7-15QQ帐户的申请与登陆(25分)实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表...原创 2019-08-19 14:09:53 · 149 阅读 · 0 评论 -
数据结构与算法7-14 电话聊天狂人 (25 分)
7-14电话聊天狂人(25分)给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号...原创 2019-08-16 17:52:17 · 615 阅读 · 0 评论 -
PAT结构与算法7-1 最大子列和问题 (20 分)(低耗迭代)
7-1最大子列和问题(20分)给定K个整数组成的序列{N1,N2, ...,NK},“连续子列”被定义为{Ni,Ni+1, ...,Nj},其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现...原创 2019-08-17 08:51:08 · 172 阅读 · 0 评论 -
PAT结构与算法7-2 一元多项式的乘法与加法运算 (30行精简)
7-2一元多项式的乘法与加法运算(20分)设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式...原创 2019-08-17 09:33:35 · 182 阅读 · 1 评论 -
PAT结构与算法 7-3 树的同构 (精简30行)
7-3树的同构(25分)给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首...原创 2019-08-17 15:02:20 · 149 阅读 · 0 评论 -
PAT结构与算法7-5 堆中的路径 (精简20行)
7-5堆中的路径(25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个...原创 2019-08-17 17:42:46 · 162 阅读 · 0 评论 -
PAT结构与算法7-6 列出连通集 (50行精简)
7-6列出连通集(25分)给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{...原创 2019-08-17 18:04:35 · 147 阅读 · 0 评论 -
PAT结构与算法7-46 新浪微博热门话题 (50行精简 & 测试点分析)
7-46新浪微博热门话题(30分)新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题...原创 2019-08-17 20:33:07 · 956 阅读 · 0 评论 -
结构与算法 7-19 求链式线性表的倒数第K项 (20 分)
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。输入格式:输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。输出格式:输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。输入样例:4 1 2 3 4 5 6 7 8 9 0 -1输出样例:7#include...原创 2019-09-24 12:22:28 · 181 阅读 · 1 评论 -
结构与算法 7-51 两个有序链表序列的合并 (20 分)
7-51两个有序链表序列的合并(20分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样...原创 2019-09-24 13:02:14 · 506 阅读 · 0 评论 -
结构与算法 7-52 两个有序链表序列的交集 (20 分)
7-52两个有序链表序列的交集(20分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:...原创 2019-09-24 13:12:39 · 837 阅读 · 1 评论 -
数据结构课程设计——程序分析
4题 程序分析班级:------------- 姓名:------ 学号:------------------------------------- 完成日期:----------【问题描述】读入一个C程序,统计程序中的代码、注释、和空行的行数以及函数的个数和平均行数,并利用统计信息分析评价该程序的风格。【基本要求】把C程序文件按字符顺序读入源程序; 边读入程序、边识...原创 2018-08-26 14:47:12 · 3230 阅读 · 1 评论