![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
拼题A
ReEchooo
这个作者很懒,什么都没留下…
展开
-
数据结构PTA 进阶实验6-3.4 拯救007(升级版)
进阶实验6-3.4 拯救007(升级版)题目解法题目在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。)设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007原创 2020-07-28 17:45:44 · 1849 阅读 · 0 评论 -
数据结构PTA 基础实验6-2.2 汉密尔顿回路
基础实验6-2.2 汉密尔顿回路题目解法题目著名的“汉密尔顿(Hamilton)回路问题”是要找一个能遍历图中所有顶点的简单回路(即每个顶点只访问 1 次)。本题就要求你判断任一给定的回路是否汉密尔顿回路。输入格式:首先第一行给出两个正整数:无向图中顶点数 N(2<N≤200)和边数 M。随后 M 行,每行给出一条边的两个端点,格式为“顶点1 顶点2”,其中顶点从 1 到N 编号。再下一行给出一个正整数 K,是待检验的回路的条数。随后 K 行,每行给出一条待检回路,格式为:n V1 V原创 2020-07-27 11:50:12 · 1288 阅读 · 0 评论 -
数据结构PTA 基础实验6-2.1 列出连通集
基础实验6-2.1 列出连通集题目解法题目给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1 v2 … vk }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入原创 2020-07-26 20:18:30 · 1478 阅读 · 0 评论 -
数据结构PTA 案例6-1.7 公路村村通
案例6-1.7 公路村村通题目解法题目现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151原创 2020-07-26 11:38:54 · 4620 阅读 · 0 评论 -
数据结构PTA 案例6-1.6 哈利·波特的考试
案例6-1.6 哈利·波特的考试题目解法题目哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他原创 2020-07-25 20:05:04 · 536 阅读 · 0 评论 -
数据结构PTA 案例6-1.5 旅游规划
案例6-1.5 旅游规划题目解法题目有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:原创 2020-07-25 17:18:53 · 2504 阅读 · 0 评论 -
数据结构PTA 案例6-1.3 哥尼斯堡的“七桥问题”
案例6-1.3 哥尼斯堡的“七桥问题” 题目解法题目哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?输入格式:输入第一行给出两个正整数,分别是节点数N原创 2020-07-22 16:51:50 · 2367 阅读 · 0 评论 -
数据结构PTA 案例6-1.4 地下迷宫探索
案例6-1.4 地下迷宫探索 题目解法题目假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?输入格式:输入第一行给出三个正整数,分别表示地下迷宫的节点数N(1<N≤1000,表示通道所有交叉点和端点)、边数M(≤3000,表示通道数)和探索起始节点编号S(节点从1到N编号)。随后的M行对应M条边(通道),每行给出一对正整数,分别是该条边直接连通的两个节点的编号。输出格式:若可以点亮所原创 2020-07-22 17:32:26 · 1460 阅读 · 0 评论 -
数据结构PTA 进阶实验5-3.2 新浪微博热门话题(分离链接法 )
@[TOC](进阶实验5-3.2 新浪微博热门话题(分离链接法 ))题目新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题。输入格式:输入说明:输入首先给出一个正整数N(≤105),随后N行,每行给出原创 2020-07-20 17:26:09 · 422 阅读 · 0 评论 -
数据结构PTA 进阶实验5-3.2 新浪微博热门话题
进阶实验5-3.2 新浪微博热门话题题目解法题目新浪微博可以在发言中嵌入“话题”,即将发言中的话题文字写在一对“#”之间,就可以生成话题链接,点击链接可以看到有多少人在跟自己讨论相同或者相似的话题。新浪微博还会随时更新热门话题列表,并将最热门的话题放在醒目的位置推荐大家关注。本题目要求实现一个简化的热门话题推荐功能,从大量英文(因为中文分词处理比较麻烦)微博中解析出话题,找出被最多条微博提到的话题。输入格式:输入说明:输入首先给出一个正整数N(≤105),随后N行,每行给出一条英文微博,其长度不超原创 2020-07-19 16:23:17 · 611 阅读 · 0 评论 -
数据结构PTA 进阶实验5-3.1 航空公司VIP客户查询
进阶实验5-3.1 航空公司VIP客户查询题目解法题目不少航空公司都会提供优惠的会员服务,当某顾客飞行里程累积达到一定数量后,可以使用里程积分直接兑换奖励机票或奖励升舱等服务。现给定某航空公司全体会员的飞行记录,要求实现根据身份证号码快速查询会员里程积分的功能。输入格式:输入首先给出两个正整数N(≤105)和K(≤500)。其中K是最低里程,即为照顾乘坐短程航班的会员,航空公司还会将航程低于K公里的航班也按K公里累积。随后N行,每行给出一条飞行记录。飞行记录的输入格式为:18位身份证号码(空格)飞原创 2020-07-18 22:45:18 · 910 阅读 · 0 评论 -
数据结构PTA 基础实验5-2.3 QQ帐户的申请与登陆
基础实验5-2.3 QQ帐户的申请与登陆题目解法题目实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。输入格式:输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密原创 2020-07-18 21:46:54 · 1195 阅读 · 0 评论 -
数据结构PTA 基础实验5-2.2 电话聊天狂人
基础实验5-2.2 电话聊天狂人题目解法题目给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。输入样例:413005711862 1358862583213原创 2020-07-18 12:16:05 · 2477 阅读 · 0 评论 -
数据结构PTA 基础实验5-2.1 整型关键字的平方探测法散列
基础实验5-2.1 整型关键字的平方探测法散列题目解法题目本题的任务很简单:将给定的无重复正整数序列插入一个散列表,输出每个输入的数字在表中的位置。所用的散列函数是 H(key)=key%TSize,其中 TSize 是散列表的表长。要求用平方探测法(只增不减,即H(Key)+i2)解决冲突。注意散列表的表长最好是个素数。如果输入给定的表长不是素数,你必须将表长重新定义为大于给定表长的最小素数。输入格式:首先第一行给出两个正整数 MSize(≤104)和 N(≤MSize),分别对应输入的表长原创 2020-07-17 19:03:28 · 2239 阅读 · 0 评论 -
数据结构PTA 案例5-1.4 字符串关键字的散列映射
案例5-1.4 字符串关键字的散列映射题目解法题目给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位;再用除留余数法将整数映射到长度为P的散列表中。例如将字符串AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序映射到整数0~25;再通过移位将其映射为3×322+4×32+6=3206;然后根据表长得到,即是该字符串的散列映射位置。发生冲突时请用平方探测法解决。输入格式:输入第一行首先原创 2020-07-16 17:50:31 · 2047 阅读 · 0 评论 -
数据结构PTA 案例5-1.3 整型关键字的散列映射
案例5-1.3 整型关键字的散列映射题目解法题目给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射到长度为P的散列表中。用线性探测法解决冲突。输入格式:输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。输出格式:在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,但行末尾不得有多余空格。输入样例:4 524 15 61 88输出样例:4 0 1 3原创 2020-07-16 15:51:16 · 1014 阅读 · 0 评论 -
数据结构PTA 基础实验8-1.1 单身狗
基础实验8-1.1 单身狗题目解法题目“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数 N(≤50000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤10000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。原创 2020-07-15 20:15:20 · 2540 阅读 · 0 评论 -
数据结构PTA 基础实验7-2.2 插入排序还是堆排序
基础实验7-2.2 插入排序还是堆排序题目解法一:不找规律,直接按照插入排序和堆排序的流程走一遍解法二:找到插入排序和堆排序的本质区别题目根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。堆排序也是将输入分为有序和无序两部分,迭代地从无序部分找出最大元素放入有序部分。它利用了大根堆的堆顶元素最大这一特征,使得在当前无序区中选取最大元素变得简单。现给定原始序列和由某排序算法原创 2020-07-14 17:24:21 · 5939 阅读 · 0 评论 -
数据结构PTA 基础实验7-2.1 魔法优惠券
基础实验7-2.1 魔法优惠券题目解法题目在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)例如,给定一组优惠劵,面值分别为1、2、4、-1;对应一组商品,价值为火星币M$7、6、-2、-3,其中负的价值表示该商品是免费赠品。我们可原创 2020-07-14 13:43:06 · 1007 阅读 · 0 评论 -
数据结构PTA 案例7-1.5 与零交换
案例7-1.5 与零交换题目解法题目将 { 0, 1, 2, …, N-1 } 的任意一个排列进行排序并不困难,这里加一点难度,要求你只能通过一系列的 Swap(0, *) —— 即将一个数字与 0 交换 —— 的操作,将初始序列增序排列。例如对于初始序列 { 4, 0, 2, 1, 3 },我们可以通过下列操作完成排序:Swap(0, 1) ⟹ { 4, 1, 2, 0, 3 }Swap(0, 3) ⟹ { 4, 1, 2, 3, 0 }Swap(0, 4) ⟹ { 0, 1, 2, 3, 4原创 2020-07-13 23:05:08 · 1291 阅读 · 1 评论 -
数据结构PTA 案例7-1.4 统计工龄
案例7-1.4 统计工龄题目解法:基于数组的桶排序题目给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。输入样例:810 2 0 5 7 2 5 2输出样例:0:12:35:27:110:1解法:基于数组的桶排序思路因为员工原创 2020-07-13 22:44:04 · 870 阅读 · 0 评论 -
数据结构PTA案例7-1.3 寻找大富翁
案例7-1.3 寻找大富翁1.题目2.三种时间复杂度为O(N^2^)的解法2.1 选择排序算法2.2 插入排序算法2.3 冒泡排序算法3.三种时间复杂度为O(N*logN)的解法1.题目胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围原创 2020-07-13 16:56:33 · 4819 阅读 · 0 评论 -
数据结构PTA7.1.2 插入排序还是归并排序?(两种解法)
目录1. 题目背景输入格式输出格式输入样例 1:输出样例 1:输入样例 2:输出样例 2:2. 解法一1. 题目背景根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判原创 2020-07-07 21:07:58 · 4460 阅读 · 1 评论