自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 PAT甲级解题报告汇总

PAT甲级解题报告汇总(更新中……)最近在刷PAT甲级题目,AC的题目都发了博文做记录。下面对博文进行一下汇总整理,方便查阅。下面所有题目的解题报告都是本人自己所作,每篇博文都有题目大意的解读,解题思路和完全正确的解题代码。

2017-08-02 11:19:37 1983

原创 指向常量的指针、常量指针傻傻分不清楚

指向常量的指针、常量指针傻傻分不清楚常量指针(const pointer)指的是指针本身是个常量,因此常量指针必须初始化,且初始化之后,他的值(地址)不能改变,也就是说该指针只能一直指向初始化的那块地址。指针的值不能改变,但是指针所指向的值能否改变视情况而定。如下例:int i=0;int *const pi=&i;//pi为常量指针,且pi一直指向i所在的那块地址。此时i的值可变const d

2017-08-23 22:20:47 317

原创 指针与引用,取地址符与解引用符

指针与引用,取地址符&与解引用符*引言探讨一下指针、引用、以及具有两种意思两个符号&和*引用引用相当于为对象取一个别名,引用本身不是对象。定义方式:int x=4;int &y=x;//y为变量x的引用,变量x有了另外一个名字y,可以通过y来间接访问x指针指针也可以实现对对象的间接访问,指针与引用有以下区别:指针本身就是对象指针无需在定义时赋初值1.使用指针获取对象的地址int i=12;

2017-08-14 21:12:17 3520

原创 1040. Longest Symmetric String (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1040题目大意:求一个字符串的最大回文子串的长度解题思路:定义一个判断回文字符串的函数遍历所有子串,找到最长的回文子串代码如下:#include <iostream>#include <cstring>using namespace std;bool isSymmetric(strin

2017-08-10 21:46:26 285

原创 1039. Course List for Student (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1039题目大意:给出每门课选课的学生,查询每个学生所选的所有课解题思路:学生的学号使用数字来存储,便于处理代码如下:#include <algorithm>#include <vector>#include <cstdio>using namespace std;int getstno

2017-08-10 21:45:47 293

原创 1038. Recover the Smallest Number (30)

题目链接:https://www.patest.cn/contests/pat-a-practise/1038题目大意:给出若干个数字,可以将这些数字随意排序,使得最后拼接处的数字最小。解题思路:最开始是想通过string字符串表示数字,将所有字符串升序排序,但是结果是不行的。比如32和321,直接排序的话得到32321,但是32321明显小于32132。所以这样排序不正确。对于两个字符串a和b

2017-08-10 21:45:12 279

原创 1037. Magic Coupon (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1037题目大意:给两个数列A和B,A、B中格挑一个元素相乘,一直重复此动作,每个元素只能用一次,把每次的乘积累加,计算所能达到的最大和。解题思路:先将两个数列排序分别计算所有的负数*负数和正数*正数累加起来代码如下:#include <iostream>#include <algorit

2017-08-10 21:44:34 283

原创 1071. Speech Patterns (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1071题目大意:给出一个字符串,以回车结束。找出字符串中的非字母和数字字符,然后将整个字符串在这些非字母数字字符出切割,得到若干个由字母数字组成的单词,找出数量最多的单词解题思路:map的使用isalnum()和tolower()的使用代码如下:#include <iostream>#in

2017-08-09 10:48:12 299

原创 1048. Find Coins (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1048题目大意:给出一个数列和一个值m,找出数列中的两个数v1,v2使得v1+v2=m。并且v1<=v2,若不唯一,输出v1最小的那个解题思路:先将数列排序定义i,j,从数列的左侧和右侧开始扫描,并计算临时和和较大j前移,和较小i后移,知道找到合适的i,j代码如下:#include <io

2017-08-09 10:47:28 238

原创 1046. Shortest Distance (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1046题目大意:一个圈上有n个点,相邻点之间的距离已知,求任意两点之间的最短距离。其实就是圈上两个点之间的顺时针距离和逆时针距离的最小者。解题思路:见代码注释解题报告:#include <iostream>#include <cstdio>using namespace std;int

2017-08-09 10:46:33 280

原创 1041. Be Unique (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1041题目大意:给个数列,求其中第一个只出现一次的数代码如下:#include <iostream>using namespace std;int cnt[10001]={0};int nums[100001];int main(int argc, char const *argv[])

2017-08-09 10:45:15 310

原创 C++中声明与定义的关系

C++中声明与定义的关系分离式编译C++支持分离式编译机制,允许将程序分割为多个文件,每个文件独立编译。如果要在多个文件中使用同一个变量,必须将声明和定义分离。此时,变量的定义只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,绝不能重复定义。声明和定义声明是使名字为程序所知,而定义负责创建与名字关联的实体。变量的声明规定了变量的类型和名字,而定义除此之外还会申请存储空间示例exte

2017-08-08 21:25:12 294

原创 1020. Tree Traversals (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1020题目大意:已知树的后序遍历和中序遍历,求该树的层次遍历解题思路:先根据后序和中序确定树的结构再进行层次遍历即可代码如下:#include<iostream>#include<vector>#include<queue>using namespace std;struct Nod

2017-08-07 09:08:31 287

原创 1021. Deepest Root (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1021题目大意:找出树中能使树的深度达到最大的根。解题思路:定义深度优先DFS(int v,int high),该函数用来找离v点最远点的集合先任取一点v,进行dfs找到离v点最远的一部分点即为集合set1,这些点是最终要求的点的子集。从set1中任选一点,在进行一次DFS,得到set2。

2017-08-07 08:58:25 293

原创 1018. Public Bike Management (30)

题目链接:https://www.patest.cn/contests/pat-a-practise/1018题目大意:先求最短路径,若有多条最短路径,优先选择需要从源点运出自行车最少的那条,若还相同的话,选择需要收回到源点的自行车最少的那条,题目保证结果唯一。解题思路:Dijkstra算法求最短路径,并保存下来DFS遍历所有的最短路径,求出这些路径中send、back最小的那个。#inclu

2017-08-07 08:57:17 275

原创 1017. Queueing at Bank (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1017题目大意:类比操作系统里的先来先服务解题思路:要模拟先来先服务,那么先对所有的人按照到来的先后顺序排序对排序后的所有人逐个选择窗口,计算需要等待的时间对于每个人,选择空出来最早的那个窗口接受服务,然后更新该窗口下次空闲出来的时间和该人的等待时间。 到的时候,最早要空出来的那个窗口都还没

2017-08-06 21:54:45 460

原创 1016. Phone Bills (25)

题目连接:https://www.patest.cn/contests/pat-a-practise/1016题目大意:给出一系列的电话记录,这些记录每个通话接通的时刻和挂断的时刻。从中找出完整的通话记录(同时含接通时刻和挂断时刻),然后输出,输出按照姓名排序,同一个人的按照时间先后排序解题思路:思路不难,但比较繁琐。将所有记录按照姓名排序,姓名相同的按照时间排序。然后从记录中挑出符合条件的记录对。

2017-08-05 19:23:51 289

原创 1007. Maximum Subsequence Sum (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1007题目大意:求一个数列的最大子列和,并输出该子列的起点和终点元素解题思路:最大和maxsum和临时和curSum初始化为0。临时和变大时更新maxsum,临时和小于0的时候,将其更新为0。end的更新比较好理解,end在cursum>maxsum的条件下随着i一直递增start的更新稍微

2017-08-05 14:25:22 317

原创 1012. The Best Rank (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1012题目大意:每个人的成绩分别按三门课的成绩和平均成绩排名,输出要查找的学生的最好排名和该排名对于的科目。解题思路:用0,1,2,3分别表示A,C,M,E用三门课的总分表示平均分(就不要考虑四舍五入的问题了)在学生结构体中定义rank[4]分量,表示该学生的A,C,M,E的排名先计算每个

2017-08-05 13:38:45 332

原创 1014. Waiting in Line (30)

题目链接:https://www.patest.cn/contests/pat-a-practise/1014题目大意:银行有N个窗口,每个窗口前的黄线内最多排队M个人,有K个人要去办理业务,每个人要办理的时间已知。排队的规则跟现实生活中的排队类似,黄线内没有位置的时候,在线外候着;黄线内有位置的时候,选择队列最短的去排队,若有两个队长度相同,则选择队列序号小的排入。最后计算每个人办理完结束的时间。

2017-08-05 13:21:28 278

原创 1035. Password (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1035题目大意:如果密码中含有1、0、l、O,将其分别替换为@、%、L、o。代码如下:#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(int argc, char cons

2017-08-03 08:56:09 384

原创 1032. Sharing (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1032题目大意:找出两个链表相汇处的结点解题思路:先遍历第一个链表,将其中所有节点标记为已访问再遍历第二个链表,在遍历过程中找到的第一个已访问的结点即为所求注意:想要通过判断next域中出现两次的结点是不可行的,因为测试用例中有些输入重复出现了多次来防止这种”小聪明”的方法代码如下:#in

2017-08-03 08:54:05 391

原创 1013. Battle Over Cities (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1013题目大意:给出一个图,然后给出一部分待检测的结点序号,判断将这些结点删除之后,对剩下的图要添加几条边才能成为连通图。解题思路:要判断一个图要添加几条边才能成为连通图,只需要统计该图有几个连通分量。n个连通分量需要n-1条边求图的连通分量,可以使用图遍历的方法。从一个结点开始深度优先地遍历

2017-08-03 08:46:05 281

原创 PAT甲级 1008. Elevator(20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1008题目大意:电梯每上一层需要6秒,下降一层需要4秒,某一层需要停下的话要停5秒,给出要停下的层次序列,求总花费时间。解题思路:模拟电梯的升降即可代码如下:#include<iostream>using namespace std;int main(){ int n; cin

2017-08-02 12:24:14 288

原创 1005. Spell It Right (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1005题目大意:对正整数N,将其各位数字相加得到和sum,然后输出sum的每位数字的英文单词代码如下:#include<iostream>using namespace std;char num[10][6]={"zero","one","two","three","four","five",

2017-08-02 12:22:29 250

原创 1001. A+B Format (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1001题目大意:输出A+B的标准格式代码如下:#include<iostream>using namespace std;int result[30];char p[30];int main(){ int a,b,tmp,len; len=0; cin>>a>>b;

2017-08-02 12:19:59 476

原创 PAT甲级 1029. Median (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1029题目大意: S1和S2为两个递增数列,求将两个数列合并后的非递减序列的中位数解题思路:定义一个大的数组buf[],将S1和S2都保存到buf[]中,然后将buf[]排序,即可很容易得到中位数代码如下:#include <iostream>#include <cstdio>#include

2017-08-02 10:57:22 342

原创 PAT甲级 1028. List Sorting (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1028题目大意:根据输入要求将所给学生按照id、name、grade排序,按姓名和分数排序时若出现相同的情况,则将相同的按照id升序排列。解题思路:使用sort()函数,自定义比较方式cmp1代码如下:#include <iostream>#include <cstdio>#include <

2017-08-02 10:54:29 358

原创 1025. PAT Ranking (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1025题目大意:给定N组学生,将N组学生按成绩分别进行组内排序和整体排序,输出每个学生的整体名次,组别,组内名次解题思路:注意处理分数相同的名次相同代码如下:#include <iostream>#include <cstdio>#include <algorithm>using nam

2017-08-02 10:52:34 302

原创 1024. Palindromic Number (25)

题目链接:https://www.patest.cn/contests/pat-a-practise/1024题目大意:判断a是否是回文数,若不是则计算a+(a的逆置)是否是回文数,如此迭代。若迭代k轮之后仍不是回文数,输出第k轮的a+(a的逆置)解题思路:注意溢出的问题,long long也是会溢出的,会有两个测试点不通过,所以要用字符串存储数字字符串可以使用函数reverse()来进行逆置

2017-08-01 20:21:55 664

原创 1023. Have Fun with Numbers (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1023题目大意:判断a和2*a中每一个数字的个数是否相同。解题思路:为便于统计数字的个数使用字符串保存数字a,然后计算2*a再统计两者中0,1,···9的个数比较两者中每个数字的个数是否相同代码如下:#include <iostream>#include <string>using n

2017-08-01 20:20:58 296

原创 1019. General Palindromic Number (20)

题目链接:https://www.patest.cn/contests/pat-a-practise/1019题目大意:给定正整数N和b,判断N的b进制数是不是回文数解题思路:函数Ninb(int n,int b),返回值为n的b进制数的逆置,判断此值就可以判断n的b进制数是否是回文数函数isPalindromic(vector num),用来判断num是否是回文数代码如下:#include

2017-08-01 20:20:11 287

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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