PAT甲级 排序
PAT甲级中遇到的排序问题
爱吃梦龙雪糕
这个作者很懒,什么都没留下…
展开
-
7-2 Anniversary (25 分)
19年春季考试中的一道题坑点如下1,substr的2种用法:(参考柳婼)假设:string s = “0123456789”;string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = “56789”string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = “567”异常:若pos的值超过了string的大小,则substr函数会出现一个out_of_range异常;若pos+len的值超过原创 2021-09-04 13:05:36 · 55 阅读 · 0 评论 -
1155 Heap Paths (30 分)
堆问题,判断一个堆是最大堆还是最小堆,并右到左输出从根结点到叶子结点的所有路径。坑点如下1,用DFS来求路径。用push和pop来维护路径。2,以此遍历所有结点,从而判断一个堆是最大堆还是最小堆。整体代码如下#include<cstdio>#include<algorithm>#include<cmath>#include<iostream>#include<vector>using namespace std;vector&原创 2021-09-01 19:28:40 · 61 阅读 · 0 评论 -
1153 Decode Registration Card of PAT (25 分)
排序问题坑点如下1,比较函数的传参尽量用引用传参。2,单作为映射可以用unordered_map,内部元素是无序的。代码如下#include<cstdio>#include<cstring>#include<iostream>#include<unordered_map>#include<vector>#include<algorithm>using namespace std;struct Node{原创 2021-09-01 19:00:25 · 50 阅读 · 0 评论 -
1137 Final Grading (25 分)
排序问题。考察了map的用法和结构体的使用坑点如下1,题目中给出三个list,每个的number数目不超过10000,则总的number不超过30000.2,注意向上取整的方法#include<cstdio>#include<cstring>#include<map>#include<iostream>#include<algorithm>using namespace std;struct Node{ string i原创 2021-08-27 15:38:10 · 56 阅读 · 0 评论 -
PAT甲级 A1014
A1014题目就不放了这道题卡了好久记录一下坑点1,窗口数最多为20,若开结构体数组将窗口开成20则编码为a[0]到a[19],若用下标标识窗口数,如第一个窗口为a[1],则数组大小不够,最后一列测试数据显示段错误,应将结构体数据尽量开大点。2,排序问题,使用公式 人的编号%窗口数 将人一一放入窗口时,第三个人及第六个人放第三个窗口,但取余数后结果为0,应单独处理。3,sorry的条件是服务时间大于等于17:00而不是服务结束时间。代码如下`#include<cstdio>#原创 2021-07-23 10:33:55 · 113 阅读 · 0 评论 -
PAT甲级 A1047 Student List for Course (25 分)
在这里插入代码片这道题也是做了很久,把后面的题做了个大概再回来处理完的遇到的坑点如下1,学生数40000,课程数2500,定义maxn=40010的情况下,如果所有有学生选满所有课程数组A[maxn][maxn],可能导致内存超限;2,学生选课到课程对应学生的转换,在选课时开一个course数组,在读人选课的同时存放选择相应课程的相应学生;3,注意sort中cmp函数的用法;代码如下#include<cstdio>#include<cstring>#include&l原创 2021-07-23 16:30:00 · 62 阅读 · 0 评论 -
1056 Mice and Rice (25 分)
这道题本身不难,难在理解题意;坑点如下;1,分组后老鼠排名,淘汰的老鼠排名均为group+1;2,当最后一组老鼠不足np时设置条件结束循环;代码如下;#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int maxn=1010;struct node{ int R; int W;}mic原创 2021-07-25 11:46:28 · 42 阅读 · 0 评论 -
1089 Insert or Merge (25 分)
插入排序与归并排序,技巧性较强;坑点如下;1,插入和归并的模板应熟练掌握。2,题目给出的排序一定是result,不包含初始情况。代码如下;#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=110;int n;int temp[maxn],origin[maxn];int outcome[maxn];void showarra原创 2021-07-25 17:51:55 · 65 阅读 · 0 评论 -
1080 Graduate Admission (30 分)
一道排序问题;坑点如下1,结构体的开法,我只开了考生,后来看有人的代码是另开了学校的结构体;2,排序函数的的用法sort(U[i].begin(),U[i].end(),cmp1);其中U为vector容器,比较函数如下bool cmp1(int a,int b){ return a<b;}3,考生rank的排行算法如下 for(int i=0;i<n;i++){ if(i>0&&student[i].grade==student原创 2021-07-26 16:57:21 · 35 阅读 · 0 评论 -
1075 PAT Judge (25 分)
一道排序问题所遇到的坑点如下1,提交成绩为-1表示未过编译器,但成绩应为0,也算提交过;2,我定义结构体时开始在结构体内部初始化了,后来发现值完全没赋值上去,上网找资料发现不能这样初始化。因为定义结构体时,并未给其分配内存,所以初值是无法存储的。应该声明结构体变量后,手工赋值。3,对于没有提交过的考生不用输出代码如下#include<cstdio>#include<cstring>#include<algorithm>using namespace s原创 2021-07-27 11:42:03 · 47 阅读 · 0 评论 -
1095 Cars on Campus (30 分)
一道排序问题,涉及到时间的处理和结构体数组的排序坑点如下1,结构体数组的排序,按照车牌号字母顺序排,如相同则按照时间来排,比较函数如下bool cmp(node a,node b){ if(strcmp(a.id,b.id)!=0) return strcmp(a.id,b.id)<0; else return a.time<b.time;}2,通过对时间和状态从大到小排序后,根据状态判断前一个为in后一个为out的车辆,并将这一车辆记录。3,测试点三一直无法通过原创 2021-07-28 09:29:11 · 41 阅读 · 0 评论 -
1022 Digital Library (30 分)
一道技巧性很强的题,起先我尝试用数组来做,最后发现很困难,看了下算法笔记后采用map<string,set>成功通过坑点如下1,getline(cin,string)遇到换行结束,会读入空格,而cin>>key以空格或换行作为结束标识,因此在读入key的过程中尝试用getchar()读入空格。代码如下while(cin>>key) { mpkey[key].insert(id); c原创 2021-07-29 10:42:27 · 32 阅读 · 0 评论 -
1129 Recommendation System (25 分)
用户推荐问题,本题考查的知识点有,对输入的数据按照出现次数及其编号进行排序,边输入变排序。参考柳神的写法,柳婼代码链接坑点如下1,set中存放结构题数组及其处理,注意结构体初始化方式。使得结构体在被存入set中时可以自动按照要求排序。struct Node{ int id; int number; Node(int a,int b):id(a),number(b){} friend bool operator<(const Node &a,const原创 2021-08-22 16:13:31 · 34 阅读 · 0 评论