PAT
文章平均质量分 64
今朝一九九三
这个作者很懒,什么都没留下…
展开
-
PAT:贪心与动态规划
1033. 加油或不加油思路: 这是一道考察贪心算法的题目,为了花最少的油钱到达终点或是跑尽可能远的距离。 我们很难整体把握这个问题,但可以通过贪心算法把整体问题化为局部问题,只站在当前的角度分析最贪婪(最优)的抉择,从而得到问题的最优解。 贪心问题的困难之处在于对问题的分析和情况分类,一旦情况考虑的不够周全,就可能满盘皆输。 对于这道题目,我们分如下的情况进行讨论: 对于当前站点S原创 2016-08-19 23:09:24 · 708 阅读 · 0 评论 -
PAT:树
1064. Complete Binary Search Tree思路:这个题目要求构造完全二叉搜索树。 巧妙的解题思路是利用完全二叉树的的一个性质: 当前节点的下标为i,则其左孩子节点的下标为2*i,右孩子节点的下标为2*i+1。这是完全二叉树的特性,因此,反过来按这个性质构造出来的树就是一个完全二叉树。 如何构造这棵完全二叉搜索树?注意到,对于一棵完全二叉搜索树,其中序遍历得到的序列是递增原创 2016-05-12 13:48:18 · 1456 阅读 · 0 评论 -
PAT:最长公共子序列
1045. 最喜欢的彩带(Favorite Color Stripe)题目抽象出来就是寻找两个序列的最长公共子序列, 但是公共部分允许元素重复。 思路: 是最长公共子序列(LCS,Longest Common Subsequence)的变种。 本题和真正的LCS问题的不同之处在于,元素可以重复,因此动态规划的递归方程成了: if( like[i] == given[j] ) len[转载 2016-09-06 20:43:37 · 507 阅读 · 0 评论 -
PAT:银行排队问题:队列
题目很长,但思路理清后其实很清晰,无非就是排队。使用STL中的queue。 如果说有什么注意点的话,这题用到了元素为queue的数组,事实上,数组元素还可以是vector、stack等其他数据结构。 代码:#include<stdlib.h>#include<iostream>#include<vector>#include<string>#include<queue>#include原创 2016-05-05 21:32:15 · 4514 阅读 · 0 评论 -
PAT:并查集
1013. Battle Over Cities思路: (1)题目给出一张图,以及几条边。要求当去掉其中的一个顶点后为了使剩下的顶点可以连通需要增加多少条边。 (2)其实只要考虑去掉这个顶点后,剩余的顶点可以组成几个独立的区域,假设该区域数为t,则需要增加的边即为t-1。 (3)为了实现(2)中所说,我们采用DFS(深度优先)最佳。#include<stdlib.h>#include<lim原创 2016-05-03 20:47:22 · 824 阅读 · 0 评论 -
PAT:哈希表
1039. 学生的课程列表思路: 思路并不难,但有两点要注意:相比string,使用char数组更快,本题中使用string会运行超时;使用了哈希表,即将char数组表示的name映射成对应的整型数据,这样可以进一步加快查找速度。本题中,如何通过上面两步缩短运行时间是考察的重点。#include<iostream>#include<vector>#include<set>#includ原创 2016-08-22 17:30:30 · 335 阅读 · 0 评论 -
PAT:注意事项
1. include相应的头文件PAT是基于IDE的,所以要提交能在IDE上正确运行的程序。必须include相应的头文件,如#include<stdlib.h>#include <iostream>#include<cmath>#include <stack>#include<vector>#include<string>也不要忘了using namespace std;否则不能直接使用原创 2016-04-04 00:25:32 · 2957 阅读 · 0 评论 -
PAT:二分查找
1010 RadixGiven a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is “yes”, if 6 is a decimal number and 110 is a binary number.Now for any pair of posi原创 2016-04-27 12:48:45 · 605 阅读 · 0 评论 -
PAT:杂项
1049. 1的个数(Counting Ones)题意: 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。 思路: 给定一个N,我们分析1~N中的数在每一位上出现1的次数的和,看看每一位上“1”出现的次数的和由什么决定。1位数的情况大于等于1的时候,有1个,小于1就没有。2位数的情况若N=13,则个位上出现1的次数为2(1和11),十位上出现1的次数转载 2016-09-11 09:25:26 · 248 阅读 · 0 评论 -
PAT:图的最短路径
1003 求无向图中最短路径的条数和最大权重和思路:在dj算法的基础上,还要增加两个数组pathNum[]和sum[]。当更新最短路径时,if(dis[j]>(dis[u]+e[u][j])){ dis[j]=(dis[u]+e[u][j]);//正常更新最短路径 pathNum[j]=pathNum[u];//pathNum更新 sum[j]=sum[u]+num[j];/原创 2016-04-16 10:20:19 · 616 阅读 · 0 评论