PAT
文章平均质量分 73
尤大鱼
这个作者很懒,什么都没留下…
展开
-
PAT 1018. Public Bike Management (30)
题目说明:有公共自行车网,从原点0出发到目标点sp,要把所有点的自行车数都置为half-full,找到最优路径,优先级依次为:路径长度最短,send最少,back最少。 算法:最短路径,dfs回溯。求出所有0到sp的路径,然后比较找出最优解。原创 2015-05-16 19:46:01 · 3489 阅读 · 0 评论 -
PAT 1023. Have Fun with Numbers (20)
题目说明:输入一个数,如果这个数翻倍之后和原数每一位的数字一样,只是排序不同,则输出Yes,否则输出No。 思路:原数最多20位,不能直接乘以2,需要按位去计算。用两个数组分别存放原数和2倍数每个数字的出现次数,最后对比得到结果。 代码: #include #include #include using namespace std; char ori[25]; char res[25];原创 2015-07-06 15:52:57 · 374 阅读 · 0 评论 -
PAT 1022. Digital Library (30)
题目说明:输入图书馆中所有书的信息,并给出检索类别和关键字,输出所检索到的书ID。 算法:简单的顺序查找。 注意点:主要是输入的格式 cin>>以空格、回车、TAB结束,getline()默认以回车结束,cin.get()无参数,读取一个字符 取子字符串,用substr(),或用copy()结尾加上'\0'。 代码: #include #include #include #includ原创 2015-07-06 12:52:36 · 302 阅读 · 0 评论 -
PAT 1025. PAT Ranking (25)
题目说明:给出不同地区测试者的分数,计算出总排名和地区排名。 思路:简单的排序算法。先分别计算地区排名,然后合并所有vector,计算总排名。 代码: #include #include #include #include using namespace std; struct Testee{ string ID; int score; int location; int loca原创 2015-07-09 10:03:20 · 506 阅读 · 0 评论 -
PAT 1024. Palindromic Number (25)
题目说明:给出一个数和次数K,判断是否对称,若不是,反转相加,直到是对称数或次数到K。 思路:题中数的数量级较大,不能用int型,使用字符串处理。先用reverse函数反转原数,判断反转数是否与原数相同,若不是,将两数相加,继续判断。 代码:#include #include #include using namespace std; int K; string num,rev; stri原创 2015-07-07 15:45:45 · 300 阅读 · 0 评论 -
PAT 1020. Tree Traversals (25)
题目说明:给出二叉树的后序遍历和中序遍历序列,输出层序遍历序列。 算法:递归建立二叉树,层序遍历。 postorder序列从后往前依次添加结点到树。记下当前的点在inorder序列中的位置,在右边找下一个点,如果找到了,添加该点为右孩子结点,并递归建立右子树;对左边重复此过程。二叉树建好后层序遍历一次就可以了。 代码: #include #include #include using na原创 2015-05-18 12:59:45 · 338 阅读 · 0 评论 -
PAT 1021. Deepest Root (25)
题目说明:给出有N个点,N-1条边的图,若图无环连通,找到所有使树的深度最大的树根;若图不连通,则输出连通分量数。 算法:两次dfs。先任选一点A开始dfs,记录所有距离该点最远的点B。此时判断是否所有点都访问过,若是,则图连通,从任一B点开始第2次dfs,记录所有距离B点最远的点C,合并B与C的结果即为所有所求的树根;若图不连通,dfs遍历图,调用dfs的次数就是连通分量数。 代码: #i原创 2015-05-21 11:11:22 · 459 阅读 · 0 评论 -
PAT 1019. General Palindromic Number (20)
题目说明:给出一个十进制数N,基数b,判断N在b进制下是否是对称数。 代码: #include #include #define MAX 100 using namespace std; long N,b; long digit[MAX]; int len=0;//digit长度 //得到的数组是反向的 void changeradix(long dec,long r){ for(原创 2015-05-17 16:56:05 · 353 阅读 · 0 评论 -
PAT 1017. Queueing at Bank (25)
题目说明:银行排队,有K个窗口,N个客户排成一队,当有窗口空闲时可以被服务。输入每个客户的到达时间和服务持续时间,输出每个客户的平均等待时间。 思路:先按照时间顺序排序所有客户,用一个vector存放正在窗口的客户的离开时间。当vector的长度小于K时,放入一个元素;若等于K,说明窗口满,推出离开时间最早的元素。 #include #include #include #include原创 2015-05-07 21:00:05 · 294 阅读 · 0 评论 -
PAT 1014. Waiting in Line (30)
题目说明:银行有N个服务窗口,每个窗口可排一队,每个窗口可容纳排队人数M人,当天的客户数有K个,询问时间的客户Q个。客户会选择队列最短的窗口去排队,若窗口都满了,剩下的人等待,有人离开后再选择窗口排队,银行营业时间从8:00到17:00。输入M个客户的服务持续时间,Q个客户的编号,输出Q个客户的服务结束时间,若被服务时间大于等于17:00,输出“Sorry”。 注意:被服务时间是服务的开始时间,原创 2015-05-07 13:19:38 · 416 阅读 · 0 评论 -
PAT 1015. Reversible Primes (20)
题目说明:输入一个十进制的数number,和进制radix,先转换成这个进制下的数,把它反过来,再转换成十进制下的数rev,若number和rev都是素数,输出“Yes”,否则输出“No”。这个题目感觉题意不是很明确,百度后才看懂了... 注意点:1不是素数也不是合数,要做特殊判断。原创 2015-05-07 12:29:11 · 337 阅读 · 0 评论 -
PAT 1016 Phone Bills (25)
题目说明: 输入: 24个小时每个时段通话价格 美分/分钟 toll[] 通话记录数N N行通话记录:名字name 时间date 状态status (on-line表示通电话,off-line表示挂电话) 输出:每个客户的账单,按照客户名字的字典顺序输出,每个客户的多条记录按照时间顺序输出。on-line和off-line配对的才是有效记录。 注意点:若客户没有有效记录,则不打印这个原创 2015-05-07 11:44:11 · 363 阅读 · 0 评论 -
PAT 1033. To Fill or Not to Fill (25)
题目说明:在一条路上有N个加油站,给出每个加油站的价格和距离,计算到目的地的最小花费。油箱有最大容量,若无法到达目的地,计算出最大能走的距离。 思路:贪心算法。 首先按照距离升序排序。 遍历一次,判断能否走到目的地。这里需要注意第一个站距离大于0的情况。 再遍历一次,计算花费。对第i个站,判断i+1站是否更便宜,若是,加到刚好能到i+1站;否则,找到下一个更便宜的站j,判断油量是否足够到达原创 2015-10-03 17:08:47 · 410 阅读 · 0 评论