![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构练习
巩固加强自己的数据结构学习内容,多看多记多用
Fmm-PMO
是非在己,毁誉由人,得失不论。
展开
-
7-4 试题 H:菜肴制作 (20 分)【拓扑排序】
知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1 到 N 的顺序编号,预估质量最高的菜肴编号为 1 。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如”i 号菜肴’必须’先于 j 号菜肴制作“的限制,我们将这样的限制简写为<i,j>。现在,酒店希望能求出一个最优的菜肴的制作顺序,使得小 A 能尽量先吃到质量高的菜肴:也就是说,(1) 在满足所有限制的前提下原创 2021-04-22 21:47:12 · 541 阅读 · 2 评论 -
7-14 最短路 (25 分)(BFS)
小明同学来到西安工业大学后,听说了计算机学院有红细胞和网安两个协会,但是它们的招新比赛时间冲突了,小明同学只能选择一个去参加。小明同学开始的位置在图书馆(图中左上角且固定不变),由于小明同学不想多走路,所以他决定去距离自己最近的比赛地点。题目保证最短路径距离唯一且距离最近的协会一定存在通路。图书馆:字母’L’表示红细胞: 字母’R’表示网安:字母’S’表示障碍物:字母’X’表示可以走的路:字母’O’表示其中‘L’,‘R’,‘S’,‘O’均为可以走的路。图示红色为一条长度为7的最短路。输入格式:原创 2021-04-15 22:04:24 · 213 阅读 · 0 评论 -
7-1 最小生成树的唯一性 (35 分)
给定一个带权无向图,如果是连通图,则至少存在一棵最小生成树,有时最小生成树并不唯一。本题就要求你计算最小生成树的总权重,并且判断其是否唯一。输入格式:首先第一行给出两个整数:无向图中顶点数 N(≤500)和边数 M。随后 M 行,每行给出一条边的两个端点和权重,格式为“顶点1 顶点2 权重”,其中顶点从 1 到N 编号,权重为正整数。题目保证最小生成树的总权重不会超过 230 。输出格式:如果存在最小生成树,首先在第一行输出其总权重,第二行输出“Yes”,如果此树唯一,否则输出“No”。如果树原创 2021-04-08 22:03:29 · 1245 阅读 · 0 评论 -
7-5 阿生的粉丝团 (40 分)
夭折了,阿生竟然有粉丝团了,而且还是清一色的妹子。激动的阿生忍不住咬了自己一下,确定一下不是梦,好吧,还真是个梦。醒来的阿生悲痛欲绝,只想知道梦境中她们平面坐标的逆时针排列,你能帮帮他吗。输入格式:输入每行给出一组整数x,y代表梦境中阿生粉丝的平面坐标,并且保证第一个的坐标永远是(0 0): -1000= x <= 1000, -1000<= y <= 1000输出格式:按照(%d,%d)的格式输出即可输入样例:0 070 -5060 30-30 -5080 205原创 2021-04-08 21:58:11 · 138 阅读 · 0 评论 -
7-6 二叉搜索树的最近公共祖先 (30 分)
给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。输入格式:输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出一对整数键值 U 和 V。所有键值都在整型int范围内。输出格式:对每一对给定的 U 和 V,如果找到 A 是它们的最近公共祖先结点的键值,则在一行中输出 LCA of U and V is A.。但如果 U原创 2021-04-08 21:52:26 · 2622 阅读 · 0 评论 -
7-7 超级玛丽 (10 分)
假定有n个城堡,编号为1至n,有的城堡之间有道路直接相连,有的城堡之间没有道路直接相连。马里奥现在准备从一个城堡出发前往另一个城堡,它有一个魔法棒,可以瞬时通过一条道路,即以0时间通过这条道路,但魔法棒最多只能用一次。马里奥想以最短的时间到达目的地,请编写程序为马里奥选定一条路线以及在什么地方使用魔法棒。假定所有道路为双向,保证从起点肯定能到达目的地。输入格式:输入第一行为4个整数n、s、t、m,分别表示城堡数(编号为1至n,n不超过10000),马里奥所在的起点s和想去的终点t,城堡间的道路数目。接原创 2021-02-07 17:04:33 · 2701 阅读 · 42 评论 -
7-8 最短路径之Dijkstra (10 分)
本题目要求通过读入无向网的边的信息(省略了各顶点的信息,仅用顶点编号来表示),构造图,并利用Dijkstra算法,求出指定源点到其它各点的最短路径。输入样例:第一行,两个整数,顶点数vN和边数eN。 以后若干行,是相关边的信息,无向图的边是对称的,只输入一半的边(小编号到大编号的,间以空格),最后两行各一个整数,前一个指定源点,后一个指定的查询的终到点。 (注意,示例中34条边,只输入了17条边的信息)10 340 1 20 3 51 2 51 3 22 4 82 5 43 5 43原创 2021-02-06 19:36:01 · 751 阅读 · 1 评论 -
7-6 单源最短路径 (10 分)
请编写程序求给定正权有向图的单源最短路径长度。图中包含n个顶点,编号为0至n-1,以顶点0作为源点。输入格式:输入第一行为两个正整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过1000。接下来e行表示每条边的信息,每行为3个非负整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。输出格式:输出为一行整数,为按顶点编号顺序排列的源点0到各顶点的最短路径长度(不含源点到源点),每个整数后一个空格。如源点到某顶点无最短路径,则不输出该条路径长度。输原创 2021-02-06 19:33:25 · 515 阅读 · 0 评论 -
7-10 重建二叉树 (10 分)
给定二叉树的中根序列和后根序列,请编写程序创建该二叉树,计算其高度和先根序列,最后删除该二叉树;如给定的中根和后根序列不合法,则亦能识别。输入格式:输入为两行字符串,第一行表示某二叉树的后根序列,第二行表示其中根序列。结点的值均为A-Z的大写字母,故二叉树结点个数不超过26,且保证输入的两个序列都是结点的全排列,但不一定是合法的中根和后根序列。输出格式:如果输入的序列不合法(不是同一棵树的中根序列和后根序列),则输出INVALID。若输入序列合法,输出为两行,第一行为一个整数,表示该二叉树的高度,第原创 2021-02-03 09:12:21 · 1111 阅读 · 0 评论 -
7-11 特殊最小成本修路 (10分)
n个城镇之间目前有一些道路连接,但道路都是年久失修的土道。现在政府准备将其中一些土道改造为标准公路,希望标准公路能够将所有城镇连通且总成本最小,但其中有一个城镇比较特殊,受地形等限制,最多只能有两条标准公路通过该镇。请编写程序,找出一种满足上述条件的、总成本最小的改造方案,若不存在改造方案,则亦能识别。假定道路是双向的。输入格式:输入包含多组数据。每组数据第一行是3个整数n、v和e,均不超过50,n为城镇数目,城镇编号0至n-1。v为最能有两条标准公路的城镇编号,e为现有的土路条数,接下来是e行表示每条原创 2021-01-31 15:49:36 · 1040 阅读 · 1 评论 -
7-5 最小支撑树 (10分)(Kruskal算法)
给定一个包含n个顶点的正权无向图,编号为0至n-1。请编写程序求出其最小支撑树,并计算其代价。输入格式:输入包含多组数据。每组数据第一行为2个整数n和e,均不超过200,分别表示图的顶点数和边数。接下来e行表示每条边的信息,每行为3个非负整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。输出格式:对于每组数据,若存在最小支撑树则输出一个整数,为最小支撑树各边权值之和;若不存在最小支撑树,则输出“There is no minimum spanning tree.”原创 2021-01-28 14:56:35 · 1289 阅读 · 0 评论 -
7-7 小字辈(左子右兄加强版) (30分)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。需要注意的是,家族成员的输入方式,是按照“Left-child Right-sibling”(左儿子 右兄弟)的格式【敲黑板】sibling的意思是兄弟/姐妹,是亲兄弟,不是“表兄弟”!2019年春季PAT中不认识单词sibling的孩纸请牢记……注:本题是在浙江大学陈越老师的GPLT-2018决赛L2-2题目“小字辈”题意基础上改编而成。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族原创 2020-12-23 17:47:02 · 640 阅读 · 0 评论 -
3-2 排座位 (20分)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,其中关系为1表示是朋友,-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行,每行给出一对需要查询的宾原创 2020-12-22 23:24:52 · 411 阅读 · 1 评论 -
7-10 叶节点求和 (30分)
对给定的有N个节点(N>=0)的二叉树,求叶节点元素之和。输入格式:第一行是一个非负整数N,表示有N个节点第二行是一个整数k,是树根的元素值接下来有N-1行,每行是一个新节点,格式为 r d e 三个整数,r表示该节点的父节点元素值(保证父节点存在);d是方向,0表示该节点为父节点的左儿子,1表示右儿子;e是该节点的元素值。输出格式:树中叶节点元素之和 (保证在整型变量范围之内)。输入样例:对于图片中的二叉树:32020 0 1020 1 25输出样例:35套原创 2020-12-22 23:02:09 · 835 阅读 · 0 评论 -
7-9 列出所有祖先结点 (30分)
对于给定的二叉树,本题要求你按从上到下顺序输出指定结点的所有祖先结点。输入格式:首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。最后一行给出一个结点的编号i(0≤i≤N-1)。输出格式:在一行中按规定顺序输出i的所有祖先结点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。输入样例:> 72 -- 6- -0原创 2020-12-22 22:14:20 · 1277 阅读 · 0 评论 -
7-1 交换二叉树中每个结点的左孩子和右孩子 (30分)
以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。输入格式:输入二叉树的先序序列。提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。输出格式:输出有两行:第一行是原二叉树的中序遍历序列;第二行是交换后的二叉树的中序遍历序列。输入样例:ABC##DE#G##F###输出样例:CBEGDFAAFDGEBCemmm,考试的时候出了点问题,想成了是交换既有做孩子又有右孩子结点的左右孩子,所以。。现在又做了原创 2020-12-17 13:42:58 · 10522 阅读 · 4 评论 -
11-散列2 Hashing (25分)
The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is defined to be H(key)=key%TSize where TSize is the maximum size of the hash table. Qua原创 2020-12-16 21:38:58 · 174 阅读 · 0 评论 -
1 奥运排行榜 (25分)
每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同。比如中国金牌总数列第一的时候,中国媒体就公布“金牌榜”;而美国的奖牌总数第一,于是美国媒体就公布“奖牌榜”。如果人口少的国家公布一个“国民人均奖牌榜”,说不定非洲的国家会成为榜魁…… 现在就请你写一个程序,对每个前来咨询的国家按照对其最有利的方式计算它的排名。输入格式:输入的第一行给出两个正整数N和M(≤224,因为世界上共有224个国家和地区),分别是参与排名的国家和地区的总个数、以及前来咨询的国家的个数。为简单起见,原创 2020-12-16 19:23:02 · 1143 阅读 · 0 评论 -
5 打印选课学生名单 (25分)(超时解决)
假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。输出格式:顺序输出课程1到K的选课学生名单。格式为:对每一门课,首先在一行中输出课程编号和选课学生总数(之间用空格分隔),之后在第二行按字原创 2020-12-10 14:28:47 · 505 阅读 · 1 评论 -
4 整型关键字的散列映射 (25分)(测试点2、3)
给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key) = Key % P将关键字映射到长度为P的散列表中。用线性探测法解决冲突。输入格式:输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。输出格式:在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。输入样例:4 524 15 61 88输出样例:4 0 1 3注意,重复关键字原创 2020-12-10 14:21:56 · 529 阅读 · 0 评论 -
7-2 冒泡法排序 (30分)
将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。输入格式:输入在第1行中给出N和K(1≤K<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔。输出格式:在一行中输出冒泡排序法扫描完第K原创 2020-12-10 14:15:47 · 543 阅读 · 0 评论 -
7-1 二分查找 (20分)
利用二分查找找出所给出的数在数组中的下标输入格式:第一行输入n和m表示数组有n个数据,m表示要对m个数进行查找输出格式:所有输出在一行完成,行末没有多余空格和多余回车。输入样例:5 51 2 3 4 51 2 3 4 5输出样例:0 1 2 3 4一开始无脑map,啊这,TEL。换scanf,printf,啊这,依旧TEL,那我就写个二分查找吧。算了,不写了,直接调用库函数。STL中的二分查找———lower_bound,upper_bound,binary_search#原创 2020-12-10 14:09:53 · 828 阅读 · 3 评论 -
10-排序5 PAT Judge (25分)(测试点2和4)
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. This time you are supposed to generate the ranklist for PAT.Input Specification:Each input file contains one test case. For each case, the first line contai原创 2020-12-01 23:15:42 · 330 阅读 · 0 评论 -
习题8.4 畅通工程之最低成本建设问题 (30分)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。输入格式:输入的第一行给出城镇数目N (1<N≤1000)和候选道路数目M≤3N;随后的M行,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号(从1编号到N)以及该道路改建的预算成本。输出格式:原创 2020-11-28 21:15:12 · 489 阅读 · 0 评论 -
09-排序2 Insert or Merge (25分)
According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, an原创 2020-11-25 08:06:04 · 174 阅读 · 0 评论 -
2-2 畅通工程之局部最小花费问题 (30分)(Kruskal)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:输入的第一行给出村庄数目N (1≤N≤100);随后的N(N−1)/2行对应村庄间道路的成本及修建状态:每行给出4个正整数,分别是两个村庄的编号(从1编号到N原创 2020-11-19 17:39:33 · 586 阅读 · 0 评论 -
2-3 社交网络图中结点的“重要性”计算 (25分)
在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。“紧密度中心性”是用来衡量一个结点到达其它结点的“快慢”的指标,即一个有较高中心性的结点比有较低中心性的结点能够更快地(平均意义下)到达网络中的其它结点,因而在该网络的传播过程中有更重要的价值。在有N个结点的网络中,结点vi的“紧密度中心性”Cc(vi )数学上定义为v原创 2020-11-19 16:17:38 · 1638 阅读 · 1 评论 -
2-4 朋友圈 (25分)
某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息,其中学生从1~N编号:第i个俱乐部的人数Mi(空格)学生1(空格)学生2原创 2020-11-19 15:20:03 · 304 阅读 · 0 评论 -
7-2 两个有序链表序列的合并 (20分)
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1输出样例:1 2 3 4 5 6 8 10一看是合并集合序列,上来就set_union()一把,12分。。提原创 2020-11-17 08:34:45 · 1553 阅读 · 0 评论 -
07-图6 旅游规划 (25分)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中原创 2020-11-15 22:20:33 · 199 阅读 · 0 评论 -
07-图4 哈利·波特的考试 (25分)
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来问原创 2020-11-14 21:35:22 · 233 阅读 · 0 评论 -
L3-002 特殊堆栈 (30分)(两种方法)
堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入格式:输入的第一行是正整数 N(≤105)。随后 N 行,每行给出一句指令,为以下 3 种之一:Push keyPopPeekMedian其中 key 是不超过 105 的正整数原创 2020-11-13 22:39:17 · 1493 阅读 · 1 评论 -
L2-026 小字辈 (25分)(另类并查集)
本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。输入样例:原创 2020-11-13 20:37:05 · 747 阅读 · 0 评论 -
L2-025 分而治之 (25分)(3种方法)
分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若干打击方案。本题就请你编写程序,判断每个方案的可行性。输入格式:输入在第一行给出两个正整数 N 和 M(均不超过10 000),分别为敌方城市个数(于是默认城市从 1 到 N 编号)和连接两城市的通路条数。随后 M 行,每行给出一条通路所连接的两个城市的编号,其间以一个空格分隔。在城市信息之后给出参谋部的系列方案,即一个正整数 K (≤ 100)和随后的 K原创 2020-11-13 19:30:29 · 2038 阅读 · 1 评论 -
04-树6 Complete Binary Search Tree (30分)
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node’s key.The right subtree of a node contains only nodes with keys greater than原创 2020-11-12 16:48:39 · 154 阅读 · 0 评论 -
7-5 部落 (20分)
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:K P[1] P[2] ⋯ P[K]其中K是小圈子里的人数,P[i](i=1,⋯,K)是小圈子里每个人的编号。这里所有人的编号从1开始连续编号,最大编号不会超过104。之后原创 2020-11-12 14:39:16 · 935 阅读 · 0 评论 -
03-树3 Tree Traversals Again (25分)(两种方法)
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2); push(3); pop(); pop(原创 2020-11-11 14:08:58 · 362 阅读 · 2 评论 -
06-图3 六度空间 (30分)
“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的原创 2020-11-11 09:24:15 · 223 阅读 · 0 评论 -
7-2 树种统计 (20分)
随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。输入样例:29Red AlderAshAspenBasswoodAshBeechYellow Birch原创 2020-11-10 22:42:01 · 329 阅读 · 0 评论 -
6-2 邻接表存储图的广度优先遍历 (20分)
试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex AdjV; /* 邻接点下标 */ PtrToAdjVNode Next; /* 指向下一个邻接点的指针原创 2020-11-10 22:14:25 · 14051 阅读 · 3 评论