Codeup
Codeup上的习题
起风了
计算机科学与技术学院18软件工程专业渣渣铭
目前大三,不考研,专攻Java,追求:成为全栈攻城狮。
展开
-
Codeup——629 | 问题 B: 采药
题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间, 在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?【输入 】第 一行有两个整数T(1 <= T <= 1000)和M(原创 2021-04-03 17:39:41 · 491 阅读 · 0 评论 -
Codeup——629 | 问题 A: 装箱问题
【问题描述】有一个箱子的容量为V(V为正整数,且满足0≤V≤20000),同时有n件物品(0的体积值为正整数。要求从n件物品中,选取若干装入箱内,使箱子的剩余空间最小。输入:1行整数,第1个数表示箱子的容量,第2个数表示有n件物品,后面n个数分别表示这n件物品各自的体积。输出:1个整数,表示箱子剩余空间。输入24 6 8 3 12 7 9 7 输出0#include <iostream>#include <vector>#include <algor原创 2021-04-03 17:26:59 · 258 阅读 · 0 评论 -
Codeup——628 | 问题 A: 最长公共子序列
题目描述给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就把Z叫做X的子序列。例如:Z=<a,b,f,c>是序列X=<a,b,c,f,b,c>的一个子序列,Z中的元素在X中的下标序列为<1,2,4,6>。现给你两个序列X和Y,请问它们的最长公共子序列的长度是多少?输入输入包含多组测试数据。每组输入占一行,为两个字符串,由若干个空格分隔。每个字符串的长度不超过100。输出对于每组输入,输出两个字符串的最长公共子原创 2021-03-19 19:02:55 · 319 阅读 · 0 评论 -
Codeup——627 | 问题 A: 最大连续子序列
题目描述一个数列ai如果满足条件a1 < a2 < … < aN,那么它是一个有序的上升数列。我们取数列(a1, a2, …, aN)的任一子序列(ai1, ai2, …, aiK)使得1 <= i1 < i2 < … < iK <= N。例如,数列(1, 7, 3, 5, 9, 4, 8)的有序上升子序列,像(1, 7), (3, 4, 8)和许多其他的子序列。在所有的子序列中,最长的上升子序列的长度是4,如(1, 3, 5, 8)。现在你要写一个程序,原创 2021-03-18 22:11:43 · 271 阅读 · 0 评论 -
Codeup——626 | 问题 A: 最大连续子序列
题目描述给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。现在增加一个要求,即还需要输出该子序列的第一个和最后一个元素。输入测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( K<原创 2021-03-16 22:31:48 · 204 阅读 · 0 评论 -
Codeup——622 | 问题 A: Fibonacci (动态规划——记忆搜索)
题目描述The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55…} are defined by the recurrence:F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2Write a program to calculate the Fibonacci Numbers.输入Each case contains a number n and you are expected to calculate Fn.(0<=n<=30)原创 2021-03-13 14:44:04 · 249 阅读 · 0 评论 -
Codeup——622 | 问题 C: Legal or Not
题目描述ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many “holy cows” like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When someone has quest原创 2021-03-13 13:34:47 · 266 阅读 · 0 评论 -
Codeup——622 | 问题 B: 确定比赛名次
题目描述有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。输入输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。原创 2021-03-13 11:35:35 · 398 阅读 · 1 评论 -
Codeup——622 | 问题 A: 算法7-12:有向无环图的拓扑排序
题目描述由某个集合上的一个偏序得到该集合上的一个全序,这个操作被称为拓扑排序。偏序和全序的定义分别如下:若集合X上的关系R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。设R是集合X上的偏序,如果对每个x,y∈X必有xRy或yRx,则称R是集合X上的全序关系。由偏序定义得到拓扑有序的操作便是拓扑排序。拓扑排序的流程如下: 在有向图中选一个没有前驱的顶点并且输出之; 从图中删除该顶点和所有以它为尾的弧。重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶原创 2021-03-13 10:11:48 · 779 阅读 · 0 评论 -
Codeup——622 | 问题 E: Jungle Roads
题目描述The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensive to mainta原创 2021-03-10 18:36:34 · 299 阅读 · 0 评论 -
Codeup——622 | 问题 D: 继续畅通工程
题目描述省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。输入测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的原创 2021-03-10 17:53:00 · 335 阅读 · 0 评论 -
Codeup——622 | 问题 C: 畅通工程
题目描述省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。输入测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =100 );随后的 N 行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到原创 2021-03-10 16:55:55 · 256 阅读 · 0 评论 -
Codeup——622 | 问题 B: Freckles
题目描述In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad’s back to form a picture of the Liberty Bell. Alas, one of the freckles turns out to be a scar, so his Ripley’s engagement falls through.Consider Dick’s back to b原创 2021-03-10 16:21:07 · 339 阅读 · 0 评论 -
Codeup——622 | 问题 A: 还是畅通工程(稀疏图,Kruscal算法求最小生成树)
题目描述某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。输入测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。当N为0时,输入结束,该用例不原创 2021-03-10 15:07:26 · 297 阅读 · 0 评论 -
Codeup——621 | 问题 E: 最短路径问题
题目描述给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点t。n和m为0时输入结束。(1<n<=1000, 0<m<100000, s != t)输出输出 一行有两个数, 最短距离及其花费。样例输入3 21 2原创 2021-03-09 14:20:32 · 259 阅读 · 0 评论 -
Codeup——621 | 问题 D: 最短路径
题目描述有n个城市m条道路(n<1000, m<10000),每条道路有个长度,请找到从起点s到终点t的最短距离和经过的城市名。输入输入包含多组测试数据。每组第一行输入四个数,分别为n,m,s,t。接下来m行,每行三个数,分别为两个城市名和距离。输出每组输出占两行。第一行输出起点到终点的最短距离。第二行输出最短路径上经过的城市名,如果有多条最短路径,输出字典序最小的那条。若不存在从起点到终点的路径,则输出“can’t arrive”。样例输入3 3 1 31 3 31原创 2021-03-09 13:55:59 · 346 阅读 · 1 评论 -
Codeup——621 | 问题 C: 最短路径
题目描述N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离。输入第一行两个正整数N(2<=N<=100)M(M<=500),表示有N个城市,M条道路,接下来M行两个整数,表示相连的两个城市的编号。输出N-1行,表示0号城市到其他城市的最短路,如果无法到达,输出-1,数值太大的以MOD 100000 的结果输出。样例输入4 30 11 22 0样例输出13-1注意:还有一种方法,大整数操作#原创 2021-03-09 10:48:45 · 332 阅读 · 5 评论 -
Codeup——621 | 问题 B: 算法7-16:弗洛伊德最短路径算法
题目描述在带权有向图G中,求G中的任意一对顶点间的最短路径问题,也是十分常见的一种问题。解决这个问题的一个方法是执行n次迪杰斯特拉算法,这样就可以求出每一对顶点间的最短路径,执行的时间复杂度为O(n3)。而另一种算法是由弗洛伊德提出的,时间复杂度同样是O(n3),但算法的形式简单很多。可以将弗洛伊德算法描述如下:在本题中,读入一个有向图的带权邻接矩阵(即数组表示),建立有向图并按照以上描述中的算法求出每一对顶点间的最短路径长度。输入输入的第一行包含1个正整数n,表示图中共有n个顶点。其中n不超原创 2021-03-09 10:46:35 · 201 阅读 · 0 评论 -
Codeup——621 | 问题 A: 算法7-15:迪杰斯特拉最短路径算法
题目描述在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短路径的算法。在本题中,读入一个有向图的带权邻接矩阵(即数组表示),建立有向图并按照以上描述中的算法求出源点至每一个其它顶点的最短路径长度。输入输入的第一行包含2个正整数n和s,表示图中共有n个顶点,且源点为s。其中n不超过50,s小于n。以后的n行中每行有n个用空格隔开的整数。对于第i行的第j原创 2021-03-09 10:44:56 · 210 阅读 · 0 评论 -
Codeup——620 | 问题 B: 连通图(三种解法:并查集,DFS,BFS)
题目描述给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的。输入每组数据的第一行是两个整数 n 和 m(0<=n<=1000)。n 表示图的顶点数目,m 表示图中边的数目。如果 n 为 0 表示输入结束。随后有 m 行数据,每行有两个值 x 和 y(0<x, y <=n),表示顶点 x 和 y 相连,顶点的编号从 1 开始计算。输入不保证这些边是否重复。输出对于每组输入数据,如果所有顶点都是连通的,输出"YES",否则输出"NO"。样例输入4 34 31原创 2021-03-06 21:45:47 · 292 阅读 · 0 评论 -
Codeup——620 | 问题 A: 第一题(三种解法:并查集,DFS,BFS)
题目描述该题的目的是要你统计图的连通分支数。输入每个输入文件包含若干行,每行两个整数i,j,表示节点i和j之间存在一条边。输出输出每个图的联通分支数。样例输入1 44 35 5样例输出2解法一:并查集并查集,主要找根结点个数,但由于不知道输入的最大数是多少,所以把数组长度取大一点,否则会报运行错误。#include <iostream>#include <algorithm>#include <set>using namespace原创 2021-03-06 20:27:18 · 273 阅读 · 0 评论 -
Codeup——617 | 问题 E: 合并果子-NOIP2004TGT2
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个原创 2021-03-04 19:00:45 · 187 阅读 · 1 评论 -
Codeup——617 | 问题 C: 哈夫曼树
题目描述哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。输出输出权值。样例输入22 8 35 11 30 样例输出1062#include <iostream>#include <algorithm>#原创 2021-03-04 18:51:51 · 214 阅读 · 1 评论 -
Codeup——616 | 问题 C: 合并果子(堆)
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这原创 2021-03-03 18:28:26 · 452 阅读 · 1 评论 -
Codeup——616 | 问题 B: 序列合并
题目描述有两个长度都为N的序列A和B,在A和B中各取一个数相加可以得到N2个和,求这N2个和中最小的N个。输入第一行一个正整数N(1 <= N <= 100000)。第二行N个整数Ai,满足Ai <= Ai+1且Ai <= 109第三行N个整数Bi,满足Bi <= Bi+1且Bi <= 109输出输出仅有一行,包含N个整数,从小到大输出这N个最小的和,相邻数字之间用空格隔开。样例输入32 6 61 4 8样例输出3 6 7思路:可以用堆实现原创 2021-03-03 16:48:29 · 335 阅读 · 1 评论 -
Codeup——616 | 问题 A: 算法10-10,10-11:堆排序
题目描述堆排序是一种利用堆结构进行排序的方法,它只需要一个记录大小的辅助空间,每个待排序的记录仅需要占用一个存储空间。首先建立小根堆或大根堆,然后通过利用堆的性质即堆顶的元素是最小或最大值,从而依次得出每一个元素的位置。在本题中,读入一串整数,将其使用以上描述的堆排序的方法从小到大排序,并输出。输入输入的第一行包含1个正整数n,表示共有n个整数需要参与排序。其中n不超过100000。第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。输出只有1行,包含n个整数,表示从小到大排序完毕的所原创 2021-03-03 14:21:07 · 201 阅读 · 0 评论 -
Codeup——615 | 问题 D: More is better(并查集)
题目描述Mr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys come, the better it will be. Of course there are certain requirements.Mr Wang selected a room big enough to hold the boys. The boy who are not bee原创 2020-11-21 17:09:35 · 212 阅读 · 0 评论 -
Codeup——615 | 问题 C: How Many Tables(并查集)
题目描述Today is Ignatius’ birthday. He invites a lot of friends. Now it’s dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want to stay with strange原创 2020-11-21 15:12:25 · 183 阅读 · 0 评论 -
Codeup——615 | 问题 B: 畅通工程(并查集)
题目描述某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?输入测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。注意:两个城市之间可以有多条道原创 2020-11-21 13:54:39 · 258 阅读 · 0 评论 -
Codeup——615 | 问题 A: 通信系统(并查集)
题目描述某市计划建设一个通信系统。按照规划,这个系统包含若干端点,这些端点由通信线缆链接。消息可以在任何一个端点产生,并且只能通过线缆传送。每个端点接收消息后会将消息传送到与其相连的端点,除了那个消息发送过来的端点。如果某个端点是产生消息的端点,那么消息将被传送到与其相连的每一个端点。为了提高传送效率和节约资源,要求当消息在某个端点生成后,其余各个端点均能接收到消息,并且每个端点均不会重复收到消息。现给你通信系统的描述,你能判断此系统是否符合以上要求吗?输入输入包含多组测试数据。每两组输入数据之间原创 2020-11-21 13:52:22 · 534 阅读 · 0 评论 -
Codeup——614 | 问题 A: 算法9-9~9-12:平衡二叉树的基本操作
题目描述平衡二叉树又称AVL树,它是一种具有平衡因子的特殊二叉排序树。平衡二叉树或者是一棵空树,或者是具有以下几条性质的二叉树:1、若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;2、若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值;3、它的左右子树也分别为平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树上结点的平衡因子定义为该结点的左子树深度减去它的右子树的深度,则平衡二叉树上的所有结点的平衡因子只可能为-1、0和1。只要二叉树上有一个结点的平衡因子的原创 2020-11-21 13:46:25 · 355 阅读 · 0 评论 -
Codeup——613 | 问题 B: 二叉搜索树
题目描述判断两序列是否为同一二叉搜索树序列输入开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。输出如果序列相同则输出YES,否则输出NO样例输入6450211204554120450214501221054504120原创 2020-11-18 21:08:45 · 220 阅读 · 0 评论 -
问题 A: 二叉排序树(二叉排序树的创建、先序遍历、中序遍历、后序遍历)
题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入输入第一行包括一个整数n(1<=n<=100)。接下来的一行包括n个整数。输出可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。样例输入12 28 15 421 10 5 39 样例输出2 2 2 8 15 8 15 15 8 21 10 5 39 5 10 21 39原创 2020-11-18 20:38:20 · 479 阅读 · 0 评论 -
Codeup——612 | 问题 B: 树的高度
题目描述一棵树有n个节点,其中1号节点为根节点。输入第一行是整数n,表示节点数后面若干行,每行两个整数a b,表示b是a的子节点。输出求这棵树的高度(根节点为第1层)样例输入51 21 33 43 5样例输出3思路:在定义的结构体tree中加上一个int型变量layer表示该结点的深度。此题用一个BFS把这棵树遍历一次,最后输出最后遍历的结点的深度,此时的深度即是这棵树的高度,在输入的过程中,先输入一个n,再输入n-1个数,为什么是n-1呢?因为这是一颗树,这棵树有n个结点原创 2020-10-24 17:44:28 · 489 阅读 · 0 评论 -
Codeup——612 | 问题 A: 树查找
题目描述有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。输入输入有多组数据。每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。输出输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。样例输入51 2 3 4 5 771 2 3 4 5 6 7 20样例输出EMPTY2 3思路:根据完全二叉树的性质对题目进行分析,先判断给出的深度是否合理,若不合理则直接输原创 2020-10-24 17:01:21 · 387 阅读 · 0 评论 -
Codeup——611 | 问题 D: 二叉树遍历
题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串:ABC##DE#G##F###其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入输入包括1行字符串,长度不超过100。输出可能有多组测试数据,对于每组数据,输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。每个输出结果占一行。样例输入a#b#cdef#####a##样例输出a b原创 2020-10-12 14:11:34 · 603 阅读 · 0 评论 -
Codeup——611 | 问题 C: 二叉树遍历(先序、中序建树,后序输出)
题目描述二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。输入两个字符串,其长度n均小于等于26。第一行为前序遍历,第二行为中序遍历。二叉树中的结点名称以大写字母表示:A,B,C…最多26个结点。输出原创 2020-10-12 13:42:54 · 771 阅读 · 0 评论 -
Codeup——611 | 问题 B: 二叉树
如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。输入输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 <= m <= n <= 1000000000)。最后一组测试数据中包括两个0,表示输入的结束,这组.原创 2020-10-11 22:22:55 · 777 阅读 · 0 评论 -
Codeup——611 | 问题 A: 复原二叉树
题目描述小明在做数据结构的作业,其中一题是给你一棵二叉树的前序遍历和中序遍历结果,要求你写出这棵二叉树的后序遍历结果。输入输入包含多组测试数据。每组输入包含两个字符串,分别表示二叉树的前序遍历和中序遍历结果。每个字符串由不重复的大写字母组成。输出对于每组输入,输出对应的二叉树的后续遍历结果。样例输入DBACEGF ABCDEFGBCAD CBAD样例输出ACBFGEDCDAB思路:定义二叉树的结构体,自定义建树函数以及后序遍历函数。每输入一个测试样例直接调用这两个函数即可。#i原创 2020-10-11 20:25:05 · 267 阅读 · 0 评论 -
Codeup——608 | 问题 E: 【递归入门】出栈序列统计(DFS)
题目描述栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两•种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定的n,计算并输出由操作数序列1,2,…,n,经过一系列操作可能得到的输出序列总数。输入一个整数n(1<=n<=15)输出一个整数,即可能输出序列的总数目。样例输入3样例输出5提示先了解栈的两种基本操作,进栈push就是原创 2020-07-02 12:09:47 · 539 阅读 · 0 评论
分享