![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT
宋霖轩
已搬迁cnblog
展开
-
PAT A1077 Kuchiguse
总的来说,这道题也没什么新鲜的,就是从后向前判断是否有相同的结尾;但是值得注意的是输入的问题,这里用cin的话,如果后面在输入新的字符串, getline会将空格或者回车读入,所以一定要注意,在cin单个字符后,一定要getchar()来代表换行。剩下的也就没什么,主要的就是从后往前比较,如果发现不同字符,截取。迭代的时候一定要注意选取最小的字符个数进行迭代,从而使得不会出现非法的地址...原创 2019-01-31 12:55:28 · 208 阅读 · 0 评论 -
PAT A1003 Emergency
之前遇到过这道题,但是对于他的知识点没有完全掌握,只能完整的写出迪杰斯特拉算法,但是并不能很好的处理附加条件;这里面附加条件主要有两个,一个num路径个数,一个权值总和个数;其实处理的方法和distance数组完全相同,只不过在相同路径判别的时候,在等于情况下进行weight数组的更新,判别方式也和distance数组的判别方式小姑娘同;值得注意的是num数组,当出现重复路径的时候...原创 2019-02-04 15:46:55 · 180 阅读 · 0 评论 -
PAT 1051 Pop Sequence
这道题其实算栈中一道比较经典的题目。之前在数据结构试题里遇到过相关的题,但是是根据弹出序列来进行判断的,也就是如果你要弹出某些元素,该元素之前的元素肯定被弹出过,但是相关的细节思路想不出来,后面会做出相关的总结;其实主体思路很简单,但是第一次的时候并没有想出来:先置flag=true,对于输入的1~N个数,挨个入站,然后在每次压栈之后看栈顶元素是否和判定输出队列的第i元素相同;如果...原创 2019-01-29 16:36:19 · 205 阅读 · 0 评论 -
PAT A1030 Travel Plan
这道题又很好的复习了迪杰斯特拉的相关算法;这道题很经典,附加了边的权值,和点的权值条件还不一样;还有一点就是路径节点的保留,类似于并查集相关概念,储存在集合里,使用DFS进行从头遍历就行;这里仍然要注意一下DFS的相关判定条件;具体代码如下所示:#include<iostream>#include<stdlib.h>#include<st...原创 2019-02-06 20:27:13 · 218 阅读 · 0 评论 -
PAT A1056 Mice and Rice
每次做PAT感觉自己都是个弱智。。。甚至怀疑自己是不是不适合CS。。。。他妈的这道题思路居然是看的;这道题其实最核心的思路就是怎么解决迭代问题,还有RANK的计数问题;首先题目是相当于循环赛的形式,所以一开始就要发现轮次的联系。RANK排名其实在本题目中就是轮次+1的关系;首先将所有的老鼠入队列,假如一共N组,每组M个,就将队列中每M个选出最大的,塞到队尾,规定RANK值,操作N次...原创 2019-01-29 19:01:12 · 268 阅读 · 0 评论 -
PAT A1074 Reversing Linked List
这道题极其经典,链表反转今年考研的时候也出现过。所以是重点的重点,以后要做双向链表的反转;最主要的是观察反转链表中的规律变化。这里贯穿一个特别重要的思想,就是有用的链表节点放在左边,方便进行访问,解决了节点从后往前遍历的问题,所以就可以从后向前按照坐标进行后继的修改。当时自己就卡在这个地方,所以这是最重要的两个点之一。#include<stdlib.h>#include...原创 2019-01-29 20:46:18 · 137 阅读 · 0 评论 -
PAT A1052 Linked List Sorting
这一道题卡了很久。。。说实话是没考虑到测试用例的多样性,好在牛客网上面公布了一些测试用例,让我知道哪块出现了问题;上述的测试用例显示了问题所在,其问题就是虽然输入了节点,但是起始节点压根跟该节点没关系;这道题彰显的有两个要点:其一:cmp函数的自定义使用,利用cmp来达到自己的排序目的;其二:关于静态链表中有序节点的存贮。其实下述代码解法中比较重要的点就是利用标志位强行将有...原创 2019-01-29 21:41:17 · 125 阅读 · 0 评论 -
PAT A1097 Deduplication on a Linked List
这道题的大致意思是给出一个链表,剔除其中的绝对值相等的重复元素,并且将重复元素和剔除后的链表进行输出。本来原来的思路是维持两个链表,将重复的和不重复的单独提出加入链表,但是这种方法极其麻烦。书上给的思路十分值得借鉴,和之前总结的链表题目一样,将每个链表节点中标志一个order位,然后对整体进行排序,使得有效节点全部在链表左边。并且其中,不重复的左半部分,重复的在右半部分。然后按照顺...原创 2019-01-30 15:32:14 · 162 阅读 · 0 评论 -
PAT A1019 General Palindromic Number
这道题一共两个考点,一个是进制转换,一个是回文子串的判别;进制转换这里要注意下,本质上就是一个取余的过程,并且最终的结果要反向输出,才是真正的转换后的进制。这里仍然需要0特殊输入的判断,输入0,进行任何进制转换,仍为0;#include<stdio.h>#include<stdlib.h>#include<vector>#include&...原创 2019-01-30 16:27:14 · 154 阅读 · 0 评论 -
PAT A1027 Colors in Mars
还是很经典的进制转换题,这道题要注意输出的问题,和普通数字不一样,由于13进制代表的是颜色编号,所以必定是两位数,不足位要补0;也有别的思路,比如先建立好13进制的不同字母的索引,然后计算出来的数组就按照索引来进行查询;大致的转换如下所示,由于题目中给了数字范围限定1-168,所以转换为13进制必定只有两位以下,输出的也可以先除,在取余:char radix[13]={'0'.....原创 2019-01-30 17:10:20 · 157 阅读 · 0 评论 -
PAT A1058 A+B in Hogwarts
水题,没什么可说的;#include<stdio.h>#include<stdlib.h>#include<vector>#include<iostream>using namespace std;using std::vector;int main(){ //1-17-29 int G1,G2,S1,S2,K1...原创 2019-01-30 18:46:36 · 127 阅读 · 0 评论 -
PAT A1076 Forwards on Weibo
这道题果然采用了BFS来遍历,没神马太高的难度,注意的点有以下几点:1.输入的节点和之前不同,是b->a;2.每次迭代之后要注意VIs数组的更新;3.示例采用的方法并不是按层数计数,而是节点内置层数信息,从而化简了层数判断的代码;详细代码如下所示:#include<stdio.h>#include<stdlib.h>#include<...原创 2019-02-04 14:41:17 · 180 阅读 · 0 评论 -
PAT 1034 Head of a Gang
这道题本身并没有什么难度,自从接触了Hash之后,也就能想着将字符串转换成Hash来做;本题的要点个人觉得是字符串和Hash值的转换,所以需要Map来进行存储,之前没有用Map写了一百多行,十分繁琐;但是不知道为什么解析每次都选择DFS,个人觉得BFS更加精简易懂。这里样例给出的DFS有两个值得学习的操作:1.利用引用传值而不是利用全局变量,这样省去了很多的初始化和重赋值操作;...原创 2019-02-03 21:46:55 · 163 阅读 · 0 评论 -
PAT A1061 Dating
水题,没神马好说的,注意审题和条件的寻找;#include <iostream>#include <stdio.h>#include <string.h> using namespace std; char day[][4] = {"MON", "TUE", "WED", "THU", "FRI", &q原创 2019-01-31 13:43:25 · 149 阅读 · 0 评论 -
PAT A1005 Spell It Right
水题,取到每位操作然后按索引输出就行;唯一需要注意的就是输入十进制的100次方,超出了整型范围,所以要用字符串来存储;#include<stdio.h>#include<stdlib.h>#include<stdio.h>#include<iostream>#include<string>#include<v...原创 2019-01-31 14:34:32 · 225 阅读 · 0 评论 -
PAT A1069 The Black Hole of Numbers
这道题大意很简单,但是自己实现的时候犯了不少错误,所以这里做出一些总结:1.数字输出格式永远比字符要简单;2.注意,输出如果有特定的0要求或者格式要求,要首先考虑数字要求;3.注意函数的一些类型,比如pow函数,如果返回值的类型double强行直接转换成int可能会丢失精度。代码如下,精简,并且让人感觉很厉害:#include<stdio.h>#includ...原创 2019-01-31 20:05:23 · 198 阅读 · 0 评论 -
PAT A1039 Course List for Student
自己写的最笨的方法果然Time Limit Exceeded,根据相关的解答,使用map输出也有相关的问题,而且注意,如果使用cin和cout也会大大的增大时长,所以一定在当数据量过大的时候注意这一点;#include<stdio.h>#include<stdlib.h>#include<iostream>#include<vector&g...原创 2019-01-31 21:03:38 · 190 阅读 · 0 评论 -
PAT A1047 Student List for Course
1039题的变种,简单很多;值得注意的是给出的样例代码,这里面维护的名字序列是索引,通过对名字序列的字典序对索引进行排序,从而可以在不打乱名字数组的情况下对输出的名字按照字典序排序,这是值得学习的一个点;样例代码如下所示:#include<iostream>#include<stdio.h>#include<stdlib.h>#inclu...原创 2019-01-31 22:36:17 · 124 阅读 · 0 评论 -
PAT A1013 Battle Over Cities
这道题可以说是很经典的图论问题,个人觉得其主要的考点是连通量的计数问题;对于这道题,起初看到,可能会反应不过来这是连通量计数问题,并且还尝试性的去考虑怎么连接连通分量;这道题其实思路很清晰,自己接触到的有两种方法可以解这个问题:1.使用深度或者广度遍历,确定出不连通的连通分量个数;2.使用并查集,对于连通分量来说,可以确定出一个确切的集合,所以多个连通分量就是有多个并查集集合;...原创 2019-02-01 12:29:46 · 150 阅读 · 0 评论 -
PAT A1021 Deepest Root
这道题综合了并查集和遍历的相关考点。对于遍历来说,可以使用DFS和BFS,但是个人觉得BFS更加简单一点,只需要逐层遍历然后记录相应的高度信息就可以,更加简洁,后面会补上DFS的相关做法,目前个人还无法太过清晰了解;#include<iostream>#include<stdlib.h>#include<vector>#include<...原创 2019-02-01 16:10:07 · 250 阅读 · 0 评论 -
PAT A1103 Integer Factorization
很经典的一道DFS的例题,虽然自己之前做过相关的总结,但是还是不由自主地卡住了。。。。卡住的地方主要在后续的分支判别上:在最后一句,错误的加上了temp.pop_back()。这里需要注意下,如果只有两条路,也就是加和不加,第一条路走不通则必然走第二条路,所以就不需要temp.pop_back();还有就是这道题给出了附加条件:1.最大的数字所组成的和;2.可以重复选址...原创 2019-02-02 22:42:59 · 287 阅读 · 0 评论 -
PAT A1032 Sharing
题目的大致叙述如下所示:简单来说,题目的大致需求就是给出两个链表,其中链表的一部分为共用部分,目的就是找到那个共用部分的第一个结点索引。自己之前先动手实现了一遍,但是仿佛像一个弱智;当时自己想的反正要对比,就像排序那样对比两个序列,两个链表的元素挨个对比。但是忽略了一个问题,当前面不同链表个数相差个大的时候,总会有一个链表先穷尽,所以不可能找到交汇点。至于书上和网上的思路是建立节点...原创 2019-01-28 18:57:23 · 326 阅读 · 1 评论 -
PAT A1091 Acute Stroke
原来读题可以这么费劲。。。感觉读题比做题难;这道题和之前BFS所做的例题基本类似,就是一个利用BFS的遍历问题;同样的,还是要提一下关于坐标数组的问题:如上所示,对于一个点,在三维坐标下,有六个方向,所以组合必须有六个,从上述的数组可以看到,竖着来看,确实是有六个坐标方向,在枚举的时候要同样注意方向问题;详细代码如下:#include<iostream>...原创 2019-02-03 15:25:56 · 234 阅读 · 0 评论 -
PAT A1082 Read Number in Chinese
这道题不知道该怎么总结。。完全就是编码方面的碾压,自己编码过于薄弱,并不能很好的实现这道题,后续仍需要注意;其实最主要的就是,对于该问题,首要的就是找出规律,我们可以发现,没四位可以作为一个单位,也就是几千,后面会加一个特定的位数,万、亿、千等。所以需要进行输入的字符串分割,每四位作为一个千位数来输出,后面加上特定的标识。最后输出。这里补零的也要注意,建立一个flag,来标志相邻的两...原创 2019-01-30 20:48:09 · 145 阅读 · 0 评论