
PTA
veeupup
学无止境
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【PTA】1013 Battle Over Cities (图的dfs+统计连通分支数目)
本题考点:统计图的强连通分支数目题目:It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must k...原创 2020-04-17 12:24:04 · 243 阅读 · 0 评论 -
PTA 6-1 单链表逆转
本题是一个非常经典的题目:单链表逆转。这是链表结点的定义:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */先给出实现的代...原创 2020-04-14 22:23:45 · 330 阅读 · 0 评论 -
PTA 7-47 打印选课学生名单
本题考点:排序的应用假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。...原创 2020-04-12 11:04:45 · 854 阅读 · 2 评论 -
PTA 7-45 航空公司VIP客户查询(map应用)
本题考点:map 的应用不少航空公司都会提供优惠的会员服务,当某顾客飞行里程累积达到一定数量后,可以使用里程积分直接兑换奖励机票或奖励升舱等服务。现给定某航空公司全体会员的飞行记录,要求实现根据身份证号码快速查询会员里程积分的功能。输入格式:输入首先给出两个正整数N(≤105)和K(≤500)。其中K是最低里程,即为照顾乘坐短程航班的会员,航空公司还会将航程低于K公里的航班也按K公里...原创 2020-04-11 21:30:43 · 329 阅读 · 0 评论 -
PTA 7-44 基于词频的文件相似度(字符串处理+set容器)
本题考点:字符串处理set 容器使用实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。输入格式:输入首先给出正整数N(≤100),为文件总数。随后按以下格式给出每个文件的内容:首先给出文件正文,最后在一行中只给出一个字符#,表示...原创 2020-04-11 20:53:25 · 483 阅读 · 0 评论 -
PTA 7-43 字符串关键字的散列映射(手写平方探测法)
考点:* 字符串的哈希函数* 哈希冲突时采用平方探测法> 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符映射为整数,每个字符占5位;再用除留余数法将整数映射到长度为P的散列表中。例如将字符串AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序映射到整数0~25;再通过移位将其映射为3×322...原创 2020-04-11 12:13:46 · 413 阅读 · 0 评论 -
PTA 7-42 整型关键字的散列映射(手写哈希表的线性探测法)
本题考点:整型哈希表的线性探测法给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射到长度为P的散列表中。用线性探测法解决冲突。输入格式:输入第一行首先给出两个正整数N(≤1000)和P(≥N的最小素数),分别为待插入的关键字总数、以及散列表的长度。第二行给出N个整型关键字。数字间以空格分隔。输出格式:在一行内输出每个整型关键字在散列表中的位置。数字间以空格分隔,...原创 2020-04-11 10:55:42 · 428 阅读 · 0 评论 -
PTA 7-41 PTA排名汇总(多阶段排序应用)
本题考点:多个阶段排序的组合计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后...原创 2020-04-11 10:35:26 · 1304 阅读 · 0 评论 -
PTA 7-40 奥运排行榜
每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同。比如中国金牌总数列第一的时候,中国媒体就公布“金牌榜”;而美国的奖牌总数第一,于是美国媒体就公布“奖牌榜”。如果人口少的国家公布一个“国民人均奖牌榜”,说不定非洲的国家会成为榜魁…… 现在就请你写一个程序,对每个前来咨询的国家按照对其最有利的方式计算它的排名。输入格式:输入的第一行给出两个正整数N和M(≤22...原创 2020-04-10 20:41:03 · 853 阅读 · 0 评论 -
PAT 7-39 魔法优惠券(优先队列的使用)
本题考点:优先队列的使用在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)例如,给定一组优惠劵,面值分别为1、2、...原创 2020-04-10 13:21:27 · 419 阅读 · 0 评论 -
PTA 7-38 寻找大富翁(优先队列的使用)
本题考点:优先队列的使用胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。学会使用优先队列,不仅要会大顶堆(优先队列),也要会小顶堆的使用:priority_queue<int, vector<int>, greater<int>> pq;完整代码...原创 2020-04-10 13:12:31 · 256 阅读 · 0 评论 -
PTA 7-37 模拟EXCEL排序(自定义排序函数)
本题考点:自定义排序函数Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。输入格式:输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性用1个空格隔开。输出...原创 2020-04-10 13:09:30 · 416 阅读 · 0 评论 -
PTA 7-36 社交网络图中结点的“重要性”计算(图的BFS)
本题考点:图的BFS在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来。他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互作用,可以增强也可以减弱。而结点根据其所处的位置不同,其在网络中体现的重要性也不尽相同。“紧密度中心性”是用来衡量一个结点到达其它结点的“快慢”的指标,即一个有较高中心性的结点比有较低中心性的结点能够更快地(平均意义下)到达...原创 2020-04-10 11:40:18 · 877 阅读 · 0 评论 -
PTA 7-35 城市间紧急救援(Dijkstra+DFS)
本题考点:多标尺的Dijkstra作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2...原创 2020-04-10 10:15:22 · 1233 阅读 · 0 评论 -
PTA 7-33 地下迷宫探索 (图的DFS)
本题考点:图的DFS遍历7-33 地下迷宫探索 (30分)地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为内容。假设有一...原创 2020-04-09 12:40:38 · 552 阅读 · 0 评论 -
PTA 7-31 笛卡尔树(BST+Heap)
本题考点:二叉搜索树和堆性质的应用笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。输入格式输入首先给出正整数N(≤1000),为...原创 2020-04-09 10:44:21 · 219 阅读 · 0 评论 -
PTA 7-29 修理牧场(Huffman树)
数据结构和代码仓库本题考点:Huffman 树农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li 个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯...原创 2020-04-05 20:43:26 · 466 阅读 · 0 评论 -
PTA 7-28 搜索树判断(镜像二叉搜索树的后序遍历)
算法源代码在 Veeupup Github考点:二叉搜索树遍历方式和性质运用对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序...原创 2020-04-04 17:59:45 · 434 阅读 · 1 评论 -
PTA 7-26 Windows消息队列(小顶堆+输入优化)
本题考点:优先队列(小顶堆) + 输入输出优化消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输入首先给出正整...原创 2020-04-04 15:22:19 · 330 阅读 · 0 评论 -
PTA 7-23 还原二叉树(前序+中序还原二叉树)
知识点:根据前序遍历和中序遍历还原二叉树给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。根据二叉树的性质,如果我们只给出二叉树的一种遍历方式的结果,不能完全确定一颗二叉树,这时的二叉树可能具有多种形态。但是当我们给出一颗二叉树的两种不同遍历方式的时候,就可以完全确定一颗二叉树。这里以前序遍历和中序遍历为例。假如我们给出两棵二叉树的前中序遍历分别为前序遍历:...原创 2020-04-04 13:49:19 · 1105 阅读 · 0 评论 -
PTA-7-22 堆栈模拟队列
本题考点:采用堆栈模拟队列文章目录解题思路情况分析代码实现设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0;int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;void Push(Stack S, ElementTyp...原创 2020-04-03 20:46:28 · 714 阅读 · 0 评论 -
PTA-7-21 求前缀表达式的值(逆波兰表达式递归求解)
本题考点:前缀表达式递归求值算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。我们先来了解一下前缀表达式:前缀表达式也称逆波兰表达式,一个逆波兰表达式的组成如下:表达式 = 符号(+,-,*,/) + 数字1(或...原创 2020-04-03 11:50:00 · 1324 阅读 · 0 评论 -
PTA-7-20 表达式转换(中缀转后缀,带括号,负数,小数转换)
本题考点:中缀表达式转后缀表达式。难点:带有小数的数字数字可能带有正负号题目描述:算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。本题的测试点如下:输入输出说明2+3*(7-4)+8/42 3 7 4 - * + 8 4 / +正常测试...原创 2020-04-02 21:31:32 · 3735 阅读 · 2 评论 -
PTA-7-18 银行排队模拟(归并排序的应用)
这个题是归并排序的一个简单应用,只需要掌握好归并排序的思想,代码很容易写出。设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。输入格式:输入为一行正整...原创 2020-04-01 18:06:36 · 1048 阅读 · 0 评论 -
汉诺塔的非递归实现及其思考
汉诺塔问题的非递归实现及其思考文章目录汉诺塔问题的非递归实现及其思考递归实现非递归实现思考有关问题的递归实现和非递归实现其实是我们理解计算机,或者说编程语言中关于函数调用的方式最好的方式之一,它让我们知道了某种编程语言在实现函数调用的方式,也是计算机进程切换的一种思想的体现。我们先来说说汉诺塔问题:汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古...原创 2020-04-01 17:11:01 · 714 阅读 · 0 评论 -
PTA-7-14 电话聊天狂人
这个题是一个 map 应用的题目,但是由于测试点的特殊性,还是有需要注意的点。这道题的额外收获是学习到了如何根据 map 的value 排序。文章目录7-14 电话聊天狂人输入格式:输出格式:输入样例:输出样例:题目解析根据 map 的 value 排序7-14 电话聊天狂人给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记...原创 2020-04-01 12:24:02 · 384 阅读 · 0 评论 -
PTA-7-12 排序,7-13 工龄统计(快速排序)
这两个题的话,都是直接考排序,虽然可以直接用库函数的 sort ,但还是推荐自己手写一遍快排,这个东西时间久不写还是容易忘记。这里就权当是复习排序的算法了。7-12 排序给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:1...原创 2020-04-01 12:23:29 · 500 阅读 · 0 评论 -
7-8 哈利·波特的考试,7-9 旅游规划,7-10 公路村村通
文章目录7-9 哈利波特的考试7-8 旅游规划7-10 公路村村通之所以把 7-8,7-9,7-10 放到一起,是因为这三个题都是非常经典的图算法,在之前总结的算法笔记中已经提到过,这里只是做一个复习,所以整理到一起。发现自己的记忆力是真的不行,还是需要勤加努力多认真学习才能把这些算法都掌握住。7-9 哈利波特的考试这道题目是想考全局最短路径,Floyd 算法,直接使用 Floyd 算法即...原创 2020-03-30 16:21:54 · 428 阅读 · 0 评论 -
PTA-7-7六度空间(图的BFS)
本题考查点:图的遍历方式题目描述“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始...原创 2020-03-29 16:20:21 · 664 阅读 · 0 评论 -
PTA-7-6 列出连通集(并查集+DFS+BFS)
本题考查点:图的并查集图的 BFS 和 DFS题目描述:给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分...原创 2020-03-29 16:05:26 · 437 阅读 · 0 评论 -
PTA-7-5 堆的路径
本题主要考察堆的性质(建堆,向堆中插入数据)。将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的...原创 2020-03-29 15:56:00 · 260 阅读 · 0 评论 -
PTA-7-4 是否是同一棵二叉搜索树
总体思路:采用先序遍历的方式来进行比较即可。(静态树)题目描述:给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出...原创 2020-03-29 15:47:48 · 259 阅读 · 0 评论 -
PTA-7-3 树的同构
题目描述:给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现在给定两棵树,请你判断是否是同构的。很惭愧,这个题目做的很复杂,但是思路很清晰,希望能分享出来,思路和难点如下:同构的树有一个特点,那就是每一层的...原创 2020-03-29 15:38:49 · 709 阅读 · 0 评论 -
PTA-7-2 一元多项式的乘法与加法运算
本体的思路就是模拟多项式的乘法,题目描述如下:7-2 设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输...原创 2020-03-29 15:26:52 · 934 阅读 · 0 评论 -
PTA-7-1 最大子列和问题
为什么要开始记录刷题笔记呢?因为发现自己经常在做完很多题目之后并没有总结和反思,所以才会忘得很快,所以从现在开始把所有值得记录的东西,经过自己思考的东西都记录下来,写成博客。题目:给定K个整数组成的序列{ N1, N2, …, N**K },“连续子列”被定义为{ N**i, N**i+1, …, N**j },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例...原创 2020-03-29 15:24:16 · 379 阅读 · 0 评论