这四道题来自 13 年 08 月 30 的 PAT 测试。

代码量不大,思路也比较直接。不过第一题的处理逻辑不太清晰,需要好好把握。稍有不慎就掉进坑里了(很多人被这道 20‘的题坑了一个多小时心慌意乱我会乱说-,-?)。

PAT advanced level 全部源码:请戳

1061. Dating (20)

题意

题意比较模糊,需要仔细对照 Sample 的数据理清思路。给定四个字符串,每个不超过 60 个字符,不含空格。要求从中找到符合如下规定的三个字符(或者它们的位置),并转化成一个时间的表达:

  • 1.依次比较前两个字符串中每个位置的元素,找到第一个相等的字符,且该字符属于[‘A’, ‘G’]的字母,注意大小写敏感。转换成一周七天输出。
  • 2.在 1 中的字符出现之后,继续比较前两个串,找到一个相等的字符,使它属于[‘0’, ‘9’] || [‘A’, ‘N’],同样,大小写敏感。转换成一天 24 小时的小时数输出。
  • 3.比较后两个字符串,找到第一个相等的字母(isalpha()),将它在数组中的位置值转换分钟数输出。

为了便于理解,给出 Sample 数据:

1
2
3
4
5
6
7
8
9
10
Sample Input:

3485djDkxh4hhGE
2984akDfkkkkggEdsb
s&hgsfdk
d&Hyscvnm Sample Output: THU 14:04
分析

理清题目的逻辑以后,实现起来是很简单的。

pat1061 源码:请戳

1062. Talent and Virtue (25)

题意

给定一堆人,每个人有三条记录:id,道德值(v),才能值(t)。给出两个值 L 和 H,用作对这堆人的分类。按照如下规则输出排序结果:

  • 0.过滤掉 v 和 t 都小于 L 的人
  • 1.v 和 t 都不小于 H 的人是圣人,属于最高的层级,排序在其他层级之前。
  • 2.v 不小于 H,而 t 小于 H 的人是君子,这个层级排在圣人之后。
  • 3.剩下的人中,v 不小于 t 的人是愚人,层级关系里排第三,排在所有圣人和君子之后。
  • 4.最后剩下的人是小人,是最低的层级。
  • 5.排名时,相同层级的人的排序关系是 1.按照 v+t 的总分 non-increasing 排序;2.按照 v 的分值按 non-increasing 排序;3.找到 id 按 increasing 排序。
分析

题意梳理清楚以后,定制比较函数用 qsort()能很快的实现。

经测试,使用coutcin会超时,改用’printf() scanf()’轻松过。

pat1062 源码:请戳

1063. Set Similarity (25)

题意

题目给出了 N(<=50)个正整数集合(实际上不是真正意义上的 set,有重复数值),每个集合最多存 M(<104)个元素,其中数值范围是 [0, 109]。给出 K 次查询,每次查询条件为两个集合,要求求出两集合的相似度。

这里集合相似度的定义是 Nc/Nt*100%,其中 Nc 为两集合的交集元素数量,Nt 为两集合的并集的元素数量。

分析

使用set给集合去重会超时。利用sort()对数组做排序,然后自行遍历去重是一个不错的方式。计算交集、并集的时候,直接用两个游标对数组遍历进行比较操作,复杂度为 O(M*K)。这种游标遍历的思想,还是很 common sense 的处理流程。

pat1063 源码:请戳

1064. Complete Binary Search Tree (30)

题意

给定一串数据,要求构建完全二叉搜索树。

分析

常规思路是对数据排序,然后递归的构建二叉搜索树(且构建的递归过程要满足完全二叉的树形结构),实现起来稍微有些代码量。

后来@Redow7 给介绍了一种更有趣的方法:

  • 0.对数据排序,等待操作。
  • 1.首先构建好完成二叉树。
  • 2.利用二叉搜索树的中序遍历的有序性,在中序遍历的过程中,将排序好的数据插入其中。

那么难点就降低到了构建完全二叉树。这又让人联想到了最大堆的数组实现:左儿子2*n,右儿子’2*n+1’。对的,数组实现的二叉树就是满足完全二叉树的特点的。于是,使用数组实现的二叉树做迭代的思路就出来了。

pat1064 源码:请戳

 原文地址:http://biaobiaoqi.github.com/blog/2013/08/31/pat-1061-pat-1064/
 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

最新文章

  1. android SQLite数据库总结
  2. MyBatis学习(二)
  3. WIn7系统下 打开.exe程序出现已停止工作关闭程序之解决办法
  4. 黑马程序员+Winform基础(下)
  5. What is GSLB
  6. [Tools] 使用XP远程登录Win8系统
  7. c++学习笔记——聚合类
  8. SpringMVC与HTML页面
  9. 关联表映射 Association Table Mapping
  10. [原]Unity3D深入浅出 - 认识开发环境中的Layers面板
  11. 负margin新解
  12. Python Cookbook(第3版)中文版:15.14 传递Unicode字符串给C函数库
  13. 软件测试之Soot
  14. android addJavascriptInterface 不能生效 解决办法
  15. [administrative][CentOS] 新装系统时如何正确精准的选择基础环境和软件包
  16. poi导出联动下拉选择的excel
  17. 系统升级win7 sp1后,ado,MSJRO.tlh error 问题
  18. 跟 Google 学 machineLearning [1] -- hello sklearn
  19. Organising the Organisation(uva10766)(生成树计数)
  20. jQueryEasyUI 学习笔记

热门文章

  1. Windows下合并tar分卷
  2. Scala入门到精通——第十九节 隐式转换与隐式參数(二)
  3. Diskpart工具应用两则:MBR/GPT分区转换 &amp;amp; 基本/动态磁盘转换
  4. CSS边框作图
  5. JavaScript的Math对象
  6. javascript的全局变量 分类: C1_HTML/JS/JQUERY 2014-08-07 11:03 562人阅读 评论(0) 收藏
  7. XHTML 结构化:使用 XHTML 重构网站 分类: C1_HTML/JS/JQUERY 2014-07-31 15:58 249人阅读 评论(0) 收藏
  8. ITFriend创业阶段的服务器环境搭建手册
  9. mysql mha高可用架构的安装
  10. zxing的使用及优化