自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 1055 The World's Richest (25 point(s)) - C语言 PAT 甲级

设计思路: 排序 * 根据财富值递减、年龄递增、名字字典序将所有人排序 * 对于每次查询,遍历并将符合指定年龄区间的人输出

2019-11-10 20:10:39 51 0

原创 1054 The Dominant Color (20 point(s)) - C语言 PAT 甲级

设计思路: 思路 2(计数): * 用 num 保存当前数字,count 表示数字出现的次数 * 当 下一个数字等于 num 时,count++,否则 count-- * 当 count == 0 时,num 重新保存当前数字 * 最终 num 保存的一定是出现次数最多的数字 思路...

2019-11-10 19:50:17 36 0

原创 1053 Path of Equal Weight (30 point(s)) - C语言 PAT 甲级

设计思路: 深度优先遍历 * 每个父节点接收储存完子节点后,按照子节点权重从大到小的顺序重新排序储存 * 深度优先遍历此树,将符合条件的路径输出

2019-11-10 19:18:28 58 0

原创 1052 Linked List Sorting (25 point(s)) - C语言 PAT 甲级

设计思路: * 利用结构体数组储存节点,数组索引当作地址 * 从头结点遍历链表,并把节点地址按序存储在另一个地址数组中,同时记录有效节点总数 * 根据节点 Key 值,对地址数组排序 * 排序后按照要求输出 注: * 可能存在无效节点 * 除 -1 外的有效地址,均要补 0 输出...

2019-11-10 17:44:59 30 0

原创 1051 Pop Sequence (25 point(s)) - C语言 PAT 甲级

设计思路: 栈的模拟,对于每个出栈序列: * 每读取到一个出栈数字,则将此数字及小于此数字的数入栈,入栈需满足: * 栈顶 top 不能超过容量 M * count 表示入栈数字 1, 2, 3, ..., N 应小于等于 N * 栈顶元素小于读取到的出栈数字 n...

2019-11-10 17:09:35 46 0

原创 1050 String Subtraction (20 point(s)) -C语言 PAT 甲级

设计思路: 数组索引,映射 S<sub>2</sub> 中出现的字符,根据映射数组重新输出 S<sub>1</sub>

2019-11-10 15:45:20 30 0

原创 1049 Counting Ones (30 point(s)) - C语言 PAT 甲级

看作数学的排列组合问题,遍历计算每一位上 1 出现的次数并相加 * 遍历到每一位,分为三个部分,当前位的数值 now,左侧数值 left,右侧数值 right,now 在个位 i = 1,在十位 i = 10,在百位 i = 100……,则: * now == 0: count += ...

2019-11-10 15:44:33 18 0

原创 1048 Find Coins (25 point(s)) - C语言 PAT 甲级

设计思路: * 利用数组和数组索引存每个数出现的次数,遍历寻找到第一对符合条件的,即可输出, * 因为遍历过程中,索引从小到大,相当于数值从小到大遍历,可以保证 V1 是最小值

2019-11-10 15:43:45 29 0

原创 1047 Student List for Course (25 point(s)) - C语言 PAT 甲级

设计思路: 和 [1039](https://blog.csdn.net/huaxuewan/article/details/101797582) 题类似。 思路 3(链表): 思路 2(取巧的方法): 思路 1(位运算超时):

2019-11-10 15:39:52 22 0

原创 1046 Shortest Distance (20 point(s)) - C语言 PAT 甲级

设计思路: 用数组储存每个节点到第 1 个节点的总距离,dis[n] 的值等于整个环路的总距离,所求结果等于两出口 dis[num2 - 1] - dis[num1 - 1] 和 dis[n] - (dis[num2 - 1] - dis[num1 - 1]) 之间的较小值

2019-11-10 15:38:39 16 0

原创 1045 Favorite Color Stripe (30 point(s)) - C语言 PAT 甲级

设计思路: 仅需要输出子序列最长的长度,可按照递增子序列记录长度;

2019-10-24 21:00:16 28 0

原创 1044 Shopping in Mars (25 point(s)) - C语言 PAT 甲级

设计思路: 思路 2(二分查找)思路 1(窗口滑动)

2019-10-24 20:53:58 73 0

原创 1043 Is It a Binary Search Tree (25 分) - C语言 PAT 甲级

设计思路: 默认此搜索二叉树,左子树小于根结点,右子树大于等于根结点 1. 直接假设所给序列为搜索二叉树,递归子树建立后序遍历,建立过程中判断 2. 若不是,则假设序列为搜索二叉树的镜像,再次递归建立后序遍历 3. 最后根据两次遍历结果输出

2019-10-24 20:47:05 61 0

原创 1042 Shuffling Machine (20 point(s)) - C语言 PAT 甲级

设计思路: * 洗牌过程中,利用一个中间数组储存上一次结果 * 54 张牌每 13 张一组,在数组中存储数字,输出时利用除法和取余

2019-10-24 20:43:39 46 0

原创 1041 Be Unique (20 point(s)) - C语言 PAT 甲级

设计思路: 两个数组,一个按顺序储存数字,另一个利用索引值储存对应数字的出现次数,再按顺序遍历一遍查找第一个仅出现一次的数字

2019-10-24 17:41:35 29 0

原创 1040 Longest Symmetric String (25 point(s)) - C语言 PAT 甲级

思路 2: * 用二维数组 map[i][j] 记录子串 s[i]...s[j] 是否是回文子串,是记录 1,否记录 0,递推方法: * 初始化 map[i][i] = 1,map[i][i + 1] = 1; * 当 s[i] == s[j],则 map[i][j] = m...

2019-10-01 18:25:07 27 0

原创 1039 Course List for Student (25 point(s)) - C语言 PAT 甲级

设计思路: 1. 名字按照 26\*26\*26\*10 映射为数字,用 id 数组记录每个人的序号,序号按照每个人的出现次序依次递增; 2. 用结构体数组按照学生序号记录每位学生的选课情况; 1. 有 2500 门课,直接用 char c\[2500\] 记录绝对超内存,所以用 1...

2019-10-01 18:24:25 38 0

原创 1038 Recover the Smallest Number (30 point(s)) - C语言 PAT 甲级

设计思路: 贪心算法: * 对数字串排序,按照相邻两个字符串组成的字符串大小排序: * 形似 return (a + b) < (b + a); * 这样排序后保证了每相邻两个子串组成的数字最小,保证了最终组成的数字最小; * 注意前导 0 的处理,若最终组成的数是 0,也...

2019-10-01 18:23:59 76 0

原创 1037 Magic Coupon (25 point(s)) - C语言 PAT 甲级

设计思路: 贪心算法: * 分别对两个序列按相同顺序排序,这里是从小到大的顺序 * 前面都是负数的元素相乘,后面都是正数的元素相乘,累计求和,即为最大值

2019-10-01 18:23:39 57 0

原创 1036 Boys vs Girls (25 point(s)) - C语言 PAT 甲级

设计思路: 用结构体存储男生和女生对应的信息,输出

2019-10-01 18:23:14 24 0

原创 1035 Password (20 point(s)) - C语言 PAT 甲级

设计思路: 将需要修改的密码,按题目要求修改后储存,计数输出;这里利用了三维数组,储存用户名和密码

2019-09-19 18:57:21 26 0

原创 1034 Head of a Gang (30 point(s)) - C语言 PAT 甲级

设计思路: DFS、连通分量 1. 因为名字给的都是字母,所以在 C 中,还要考虑如何用数字保存和映射名字: 2. 用数组储存边和节点的权值,DFS 遍历图,记录下符合条件的团伙 3. 团伙输出前,依据头目名排序

2019-09-19 18:57:00 59 0

原创 1033 To Fill or Not to Fill (25 point(s)) - C语言 PAT 甲级

设计思路: 贪心算法: * 注意车子最开始是没油的,若第一个加油站距离不为 0,即杭州没有加油站,汽车哪也去不了 * 手动添加一个在目的地的加油站,油价设为 0,在贪心策略下,汽车一定需要经过此站,以此判断是否能到达目的地,简化程序中的判断 1. 在能够到达的最大距离内寻找加油站,如果找到...

2019-09-19 18:56:34 66 0

原创 1032 Sharing (25 point(s)) - C语言 PAT 甲级

首先遍历两个链表得到各自的长度;第二次遍历,先让长的链表走若干步,使剩下的长度和短的链表长度相同;然后,同时在两个链表上遍历,找到第一个相同的节点即第一个公共节点。 但本程序使用了额外的空间,让时间复杂度更极端一点(只是尽可能尝试不同的思路)。先遍历第一条链表,将访问的节点标记,再遍历第二条...

2019-09-19 18:56:15 56 0

原创 1031 Hello World for U (20 point(s)) - C语言 PAT 甲级

难点在于确定 n1、n2 的值;确定了三条边的长度,利用一个头指针和一个尾指针,按行输出原字符串即可

2019-09-19 18:55:59 29 0

原创 1030 Travel Plan (30 point(s)) - C语言 PAT 甲级

设计思路: Dijksta 和 DFS * Dijksta 求得 pre[] 数组 * DFS 遍历输出最短路径

2019-09-17 11:35:12 35 0

原创 1029 Median (25 point(s)) - C语言 PAT 甲级

设计思路: 1. 两个序列都存下来,会超过题目要求的内存限制 2. 储存第一个序列,第二个序列不储存,在输入的过程中寻找中间数;序列分别有 n1 和 n2 个数,则中间数在 (n + m + 1) / 2 的位置 3. 序列后面加一个最大值 INT_MAX 当“哨兵”,可以简化处理过程

2019-09-16 23:38:38 25 0

原创 1028 List Sorting (25 point(s)) - C语言 PAT 甲级

设计思路: 按题目要求排序后,输出

2019-09-16 23:06:35 37 0

原创 1027 Colors in Mars (20 point(s)) - C语言 PAT 甲级

设计思路: 输入 0 ~ 168 的十进制,转换十三进制不会超过两位数

2019-09-16 22:35:35 22 0

原创 1026 Table Tennis (30 point(s)) - C语言 PAT 甲级

总结一下本程序中提供服务的逻辑层次: * while 等待队列非空 * 若队首是服务过的用户 * 队首直接出列,continue * 根据队首的到达时间,寻找一张编号最小的空闲桌子或结束最早的 * if 找到的是 VIP 桌 * 队列里有 VIP 用户,选 ...

2019-09-16 20:22:38 44 0

原创 1025 PAT Ranking (25 point(s)) - C语言 PAT 甲级

设计思路: * 输入过程中,先每个考场排序,得到考场排名 * 再进行一次整体排序,得到总排名 * 分数相同,按学号从小到大排

2019-08-23 11:02:46 48 0

原创 1024 Palindromic Number (25 point(s)) - C语言 PAT 甲级

设计思路: * 数字倒序存储,把低位放在数组的低位,简化进位操作,需要在输入初始化时特殊处理一次 * 翻转数 * 大数相加 * 判断回文数 注:最终的字符串长度极限看着来?(求饶过~)

2019-08-23 11:02:31 93 0

原创 1023 Have Fun with Numbers (20 point(s)) - C语言 PAT 甲级

设计思路: * 利用标记数组记录每个数字出现的次数

2019-08-23 11:02:18 60 0

原创 1022 Digital Library (30 point(s)) - C语言 PAT 甲级

设计思路: * 结构体存储书的信息 * 每次查询命令对应一次查询 * 查询函数中,因为结构体内成员的地址是相对地址,所以利用偏移量对应每次查询 注:若是把结构体中 keywords[] 改成一维数组,直接存储一行,keysearch 函数可以直接利用 strstr() 进行子串...

2019-08-23 11:02:04 64 0

原创 1021 Deepest Root (25 point(s)) - C语言 PAT 甲级

设计思路: DFS 1. DFS 求连通分量,若大于 1,直接输出连通分量数 2. 若能构成数,再一次 DFS,寻找最大深度的根节点: * 从第一次 DFS 得到的最大深度节点集合中,任选一个开始,再次得到一个最大深度节点的集合,两个节点集合的并集即为所求

2019-08-23 11:01:47 58 0

原创 1020 Tree Traversals (25 point(s)) - C语言 PAT 甲级

设计思路: 1. 维护一个队列,实现层序遍历,队列的节点是一颗子树: * 队列节点 node,指向后序遍历和中序遍历子数组的指针,两个子数组相等的长度(以此代表一颗子树) 2. 初始化整颗树入队: * 节点出队,节点的后序遍历数组的最后一位得到根节点;再根据中序遍历数组求得...

2019-08-23 11:01:36 46 0

原创 1019 General Palindromic Number (20 point(s)) - C语言 PAT 甲级

设计思路: * 进制转换,回文数判断

2019-08-23 11:01:12 43 0

原创 1018 Public Bike Management (30 point(s)) - C语言 PAT 甲级

设计思路: Dijkstra 求所有最短路径,DFS 选择最短路径中的最优值 * 邻接链表(结构数组模拟实现),存储节点最短路径的前驱节点 * DFS 遍历所有最短路径,过程中记录最优路径

2019-08-23 11:00:55 385 0

原创 1017 Queueing at Bank (25 point(s)) - C语言 PAT 甲级

设计思路: 相当于每个窗口只容纳一人,只需为每个窗口维护一个结束时间 1. 读取数据,根据到达时间排序 2. 遍历 17:00 之前到达的顾客,查询完成时间最早的窗口,则: * 顾客到达时间早于此窗口结束时间:两者之差累加到等待时间,此窗口结束时间累加顾客业务时间 * 顾...

2019-08-23 11:00:40 73 0

原创 1016 Phone Bills (25 point(s)) - C语言 PAT 甲级

设计思路: * 输入数据,先按照客户名排序,再按照时间排序 * 遍历数据,前后客户名相同且状态分别为 on-line 和 off-line,为合格数据

2019-08-23 11:00:18 53 0

提示
确定要删除当前文章?
取消 删除