PAT
刷PAT遇到的坑
growthmindset
这个作者很懒,什么都没留下…
展开
-
A1082
本题主要需判断的点有两个:1、零后面紧跟一个非零数时,要先输出一个零(注:多个零连续时也只输出一个零)2、千万位、百万位、十万位、万位上只要有一位是非零的,那么当读到万位时都必须输出万细节:1、当只有一个数时需特判2、数前数后无空格3、最后一位数若非零,则只需要输出一个数,因此需特判是否遍历到倒数第二位数了。刚开始只考虑到了主要点1、2,对空格处理非常模糊不清,(有的输出语句前面加了...原创 2020-01-03 08:05:00 · 157 阅读 · 0 评论 -
A1036
AC代码#include<cstdio>#include<cstdlib>struct pnode{ char name[11]; char gender; char id[11]; int grade;}mgrade,fgrade,temp;int main(){ int n; scanf("%d",&n); mgrade.grade=10...原创 2019-12-31 20:58:22 · 101 阅读 · 0 评论 -
A1006
AC第一版#include<cstdio>#include<cstdlib>#include<iostream>#include<string>using namespace std;typedef struct Person{ //数字可以整型输入 char id[16]; int inh; int inm; int...原创 2019-12-31 20:32:06 · 94 阅读 · 0 评论 -
A1077
求字符数组的长度函数:sizeof(char*),strlen(char*)头文件char str[20]=”0123456789”;int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。int b=sizeof(str); //而b=20; >>>> sizeof ...原创 2019-12-31 11:55:45 · 134 阅读 · 0 评论 -
A1065
题目给定的范围如上,但A,B,C不会取到2^63因为会发生溢出,long long存储2^63时,会自动变成-2^63,无法区分左右边界。但题目中判断时需要考虑溢出情况。计组没学好的痛苦:又臭又长的代码:#include<cstdio>#include<cstdlib>int main(){ #ifdef ONLINE_JUDGE #else ...原创 2019-12-28 17:04:57 · 90 阅读 · 0 评论 -
A1058
scnaf中间加点正确写法:scanf("%d.%d.%d",&A[0],&A[1],&A[2]);之前错误写法:scanf("%d"."%d"."%d",&A[0],&A[1],&A[2]);脑子短路。。。代码展示:#include<cstdio>#include<cstdlib>int main(){ #i...原创 2019-12-23 08:49:00 · 118 阅读 · 0 评论 -
A1046
超时代码:#include<cstdio>#include<cstdlib>int main(){ #ifdef ONLINE_JUDGE #else freopen("1.txt","r",stdin); #endif int N,M,a,b,D[100002]; D[0]=0; //缓冲效果,当计算1到某个值之间距离时有用 scanf("%...原创 2019-12-22 11:50:56 · 106 阅读 · 0 评论 -
A1001
整型转换为char*long nativeobject = 3213;char c[16];sprintf(c,"%d",nativeObject);//这句将nativeobjcet作为字符串输出到c中。获取字符数组长度strlen(char*)原创 2019-12-26 16:02:48 · 112 阅读 · 0 评论 -
A1042
数组越界问题严重被自己蠢到:这一长串数字都没输入当遇到问题时不能光顾着看代码,要进行调试快速找到错误原创 2019-12-22 11:55:35 · 160 阅读 · 0 评论 -
A1035
1、细节问题,使循环无法终止,导致超时修改1后:2、运行报“部分错误”,调试代码发现程序逻辑并没有错误寻找问题:可见问题所在,index数组中并未存放下标等于sum的值,去掉“=”解决问题程序最终展现#include<cstdio>#include<cstdlib>int main(){ int N,index[1001],sum=0; cha...原创 2019-12-22 11:53:24 · 104 阅读 · 0 评论 -
A1031
获取字符数组长度strlen(char*)本题总结对n1,n2的范围要把控好,能在草稿纸上进行的操作尽量在草稿纸上化简好。需跳过一个个坑:原创 2019-12-22 11:53:43 · 88 阅读 · 0 评论 -
A1027
疯狂报编译错误愣是没马上找出来,吸取教训!!!原创 2019-12-22 11:54:36 · 92 阅读 · 0 评论 -
A1005
忘了字符转整型字符符型转换整形用强制转换就行:char c=‘B’ ;int a ;a = (int)c ;如果是字符’0’到‘9’转成0-9:char c=‘8’ ;int a ;a =(int) (c - ‘0’) ;如果是字串转数字:用atoi数组越界(报错:运行时错误),题目给的的最大长度是100,而我当时误以为是10,给定了12[外链图片转存失败,源站可能有防盗链机制,建议将图...原创 2019-12-22 11:55:53 · 114 阅读 · 0 评论 -
A1011
审题scanf(“lf”,&k);漏加了“%”:不会显示编译错误,显示答案错误运行代码#include<cstdio>#include<cstdlib>int main(){ char kind[4]={'W','T','L'}; double num[3],k; int index[3]; for(int i=0;i<=2;i++){ ...原创 2019-12-22 11:55:15 · 99 阅读 · 0 评论 -
A1019
log2(8)=log(8)/log(2)log2(8)=log(8)/log(2)log2(8)=log(8)/log(2)取对数:log(doublex)向下取整:floor(doublex)取对数:log(double x)向下取整:floor(double x)取对数:log(doublex)向下取整:floor(doublex)使用上述数学公式需要添加对应的头文件:读题要...原创 2019-12-22 11:54:56 · 92 阅读 · 0 评论 -
A1147
本题还比A1098容易,都无需进行堆排序,一遍AC.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include<set>#include&l...原创 2020-02-08 09:27:16 · 121 阅读 · 0 评论 -
A1098
开始一个测试点过不了过程:先不断进行插入排序,寻找每次排序后是否与目标序列相同,若相同,则表示目标序列使用的是插入排序,再进行一轮插入排序后将其输出即可;若一直到最后都没相同的,则表示目标序列使用的是堆排序,那么就开始堆排序,直到与目标序列相同,再进行一轮堆排序后将其输出即可.#include<cstdio>#include<cstdlib>#include<...原创 2020-02-07 10:48:47 · 116 阅读 · 0 评论 -
A1107
本题若不用并查集会相当麻烦,很有可能超时.开始我想着:初始化mapping数组为全0,用mapping数组记录下第一组数据,即每个hobby指向第一个人,该组人数变为1.在遍历后面几组数据时,一旦遇到某个hobby对应mapping数组中的值非0,表示这俩人是cluster,然后将当前这个人的其他hobby都指向第一个人,该组人数++,这样一来就需要将该组中前几个已经scanf的hobby重新拿...原创 2020-02-06 10:05:38 · 147 阅读 · 0 评论 -
A1066
没写出,平衡二叉树需要多练多思考多画图.//柳神 #include <iostream>using namespace std;struct node { int val; struct node *left, *right;};node *rotateLeft(node *root) { node *t = root->right; ...原创 2020-02-05 09:38:17 · 89 阅读 · 0 评论 -
A1099
本题是由已知二叉树遍历得到中序遍历序列的逆用.已知二叉树中序遍历序列,将每个结点的权重存入二叉树.用数组存储,遍历过程与链表一致,由数组下标指向左右孩子代替链表指针指向左右孩子.同类型题:A1064.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#...原创 2020-02-04 09:18:49 · 263 阅读 · 0 评论 -
A1064
没写出.本题是由已知完全二叉树遍历得到中序遍历序列的逆用.已知完全二叉树中序遍历序列,获取完全二叉树.用数组存储,遍历过程与链表一致,由root2代替root->lchild,root2+1代替root->rchild.#include<cstdio>#include<cstdlib>#include<string.h>#include...原创 2020-02-03 16:53:39 · 126 阅读 · 0 评论 -
A1043
没做出.关键点:1、将二叉搜索树建起来.2、先序镜像遍历二叉搜索树.3、后序镜像遍历二叉搜索树.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#inc...原创 2020-02-03 15:45:43 · 131 阅读 · 0 评论 -
A1053
本题最重要的点:由于最后的输出需要按权值从大到小排序,因此在读入时要事先对每个结点的子节点vector进行排序(即对vector中的结点按权值从大到小排序),这样在遍历时就会优先遍历到权值大的子结点. 开始没有做这个预处理,导致最后难以对获取到的数据进行排序.注意点:cmp()见下.通过DFS寻找到路径上权值总和=s的所有叶子结点并存储下来,然后通过叶子结点向上寻找其父结点.比较繁琐.#i...原创 2020-02-02 21:02:09 · 199 阅读 · 0 评论 -
A1004
DFS:#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include<set>#include<map>#include<...原创 2020-02-01 16:09:43 · 227 阅读 · 0 评论 -
A1106
A1079、A1090可结合一起看.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include<set>#include<map>...原创 2020-02-01 15:48:19 · 128 阅读 · 0 评论 -
A1094
一开始惯性思维了,只获取了叶子结点相关内容.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include<set>#include<ma...原创 2020-02-01 15:31:37 · 125 阅读 · 0 评论 -
A1090
A1079基于本题读题不能有太强的代入感,要从题目中获取,不是自己想当然.the number of retailers that sell at the highest price:卖最高价格的零售商数目.(而不是卖最高价格的结点是哪一个)本题的本质便是通过DFS获取到最大深度以及该深度的结点数.DFS:#include<cstdio>#include<cstdli...原创 2020-02-01 15:00:45 · 129 阅读 · 0 评论 -
A1079
Kj being 0 means that the j-th member is a retailer, then instead the total amount of the product will be given after Kj.本题读题要仔细,一开始没注意到题目有给出零售商卖给用户的数目,导致没有思路.定义结构体比较关键:在输入时便可记录下每个结点是否为叶子结点即零售商(...原创 2020-02-01 10:43:03 · 105 阅读 · 0 评论 -
A1110
完全二叉树的判定方法:进行层次遍历,并且让空结点也入队,如果在访问完N个非空结点之前访问到了空结点,那么说明不是完全二叉树。一个测试点过不了:发现是因为我通过返回值是否是root来判断是否为二叉树,而当n=1即只有一个根结点的情况下,返回的一定是root,此情况需特判.#include<cstdio>#include<cstdlib>#include<stri...原创 2020-02-01 08:45:25 · 172 阅读 · 0 评论 -
A1102
二叉树反转reverse:每个根结点的左右子树交换位置.因为题目直接给的是结点编号的关系,因此本题用二叉树的静态写法会非常方便.swap()交换左右孩子位置.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>...原创 2020-01-31 15:31:50 · 159 阅读 · 0 评论 -
A1086
本题的关键是对所给样例的理解,看了算法笔记才明白,push的次序是先序遍历顺序,pop的次序是中序遍历顺序.其余跟A1020一样.A1020通过后序、中序遍历获取二叉树A1086通过先序、中序遍历获取二叉树#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>...原创 2020-01-31 10:34:00 · 236 阅读 · 0 评论 -
A1020
通过后序遍历、中序遍历的得到树,再将层次遍历呈现出来.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include<set>#include&...原创 2020-01-31 09:31:51 · 115 阅读 · 0 评论 -
A1091
开始没读懂题,由于没碰到过三维数组的题,思想只禁锢于二维数组.Two pixels are connected and hence belong to the same region if they share a common side, as shown by Figure 1 where all the 6 red pixels are connected to the blue one....原创 2020-01-30 08:56:54 · 175 阅读 · 0 评论 -
A1103
开始时写的超时,尝试做预处理:根据输入的值,确定递归中idx的更精准范围,从而减小时间复杂度.正确预处理:在获取以上更精准范围的同时,将每个值的对应指数次方的数存在数组中,才是真正做好了预处理,之后每次递归都无需再去算指数次方,直接从数组中根据对应下标获取即可.a本题的过程,很是坎坷1、从前往后遍历(预处理什么都没有),很多超时,错误 .2、针对超时,想到了可能是因为没有作预处理:从前往后...原创 2020-01-28 16:44:41 · 276 阅读 · 0 评论 -
A1128
看过算法笔记递归那节的n皇后,写起来很顺:注意点:1、题目没说给定的各个数都是不同的,只说了不会同列,但会有在同行的情况出现.2、判断是否在对角线上的写法的原因详见p117最上方.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<...原创 2020-01-27 19:29:07 · 183 阅读 · 0 评论 -
A1067
思路没问题,但细节上还欠缺,运行时两个测试点运行超时,定位在两个for循环上,却不知怎么优化.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include&...原创 2020-01-26 21:10:14 · 180 阅读 · 0 评论 -
A1037
本题思路正确,注意点:出现段错误可能原因:1、数组给小了2、数组下标超出数组大小了#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#include<iostream>#include<vector>#include<s...原创 2020-01-26 15:39:32 · 151 阅读 · 0 评论 -
A1033
没考虑到的点:1、在没有更低油价的加油站时,前往油价尽可能低的加油站2、当没有距杭距离为0的加油站时特判输出最远距离//没能解决的问题: //1、now_Price,consumeGap_Total没有处理好,只能适用于某些情况. #include<cstdio>#include<cstdlib>#include<string.h>#includ...原创 2020-01-26 15:31:23 · 135 阅读 · 0 评论 -
A1070
注意点:一处代码用while循环,导致一个测试点段错误,总结发现是因为出现了死循环,当市场最大需求量D足够大时,导致代码运行不到含break的if语句里,从而无法通过break来终止.因此最好将while改成for,当遍历到最后一种月饼时还未退出循环,可自动结束循环.#include<cstdio>#include<cstdlib>#include<string...原创 2020-01-24 10:45:10 · 117 阅读 · 0 评论 -
A1097
本题思路:遍历整个链表,筛选出两个结构体数组,一个放本体,另一个放副本.通过bool类型数组中的记录判断当前遍历到的key是本体还是副本,再将其放入对应的结构体中.注意点:可能存在无效结点.#include<cstdio>#include<cstdlib>#include<string.h>#include<math.h>#includ...原创 2020-01-23 15:34:38 · 95 阅读 · 0 评论