![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT甲级
在PAT甲级刷题的过程中,所碰见的一些自己感兴趣或者困难踩过坑的题目
Agreenhan
a greenhand keeps rising!
展开
-
PAT 拯救007
题目描述在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。)设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃原创 2021-09-26 11:01:43 · 51 阅读 · 0 评论 -
PAT 目录树
题目描述在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。输入格式输入首先给出正整数N(≤104),表示ZIP归档文件中的文件和目录的数量。随后N行,每行有如下格式的文件或目录的相对路径和名称(每行不超过260个字符):路径和名称中的字符仅包括英文字母(区分大小写);符号“\”仅作为路径分隔符出现;目录以符号“\”结束;不存在重复的输入项目;整个输入大原创 2021-09-26 10:18:20 · 120 阅读 · 0 评论 -
PAT 最小生成树的唯一性
题目描述给定一个带权无向图,如果是连通图,则至少存在一棵最小生成树,有时最小生成树并不唯一。本题就要求你计算最小生成树的总权重,并且判断其是否唯一。输入格式首先第一行给出两个整数:无向图中顶点数 N(≤500)和边数 M。随后 M 行,每行给出一条边的两个端点和权重,格式为“顶点1 顶点2 权重”,其中顶点从 1 到N 编号,权重为正整数。题目保证最小生成树的总权重不会超过 230。输出格式如果存在最小生成树,首先在第一行输出其总权重,第二行输出“Yes”,如果此树唯一,否则输出“No”。如果树原创 2021-09-25 13:31:32 · 466 阅读 · 0 评论 -
根据后序和中序遍历输出前序遍历
题目描述本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式第一行给出正整数N (≤30),是树中结点的个数。随后两行,每行给出N 个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式在一行中输出Preorder: 以及该树的先序遍历结果。输入样例72 3 1 5 7 6 41 2 3 4 5 6 7输出样例Preorder: 4 1 3 2 6 5 7题目不过多复述,看了其他博客,感觉讲的都不清楚,公式原创 2021-09-21 16:03:53 · 1970 阅读 · 0 评论 -
PAT 六度空间
六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的一手数据已经逐渐原创 2021-09-21 13:52:31 · 68 阅读 · 0 评论 -
基础实验3-2.2:单链表分段逆转
内存限制:128 MB时间限制:1 S标准输入输出题目类型:传统评测方式:文本比较上传者:admin提交:25通过:10题目描述熟悉掌握链式线性表的基本操作给定一个带头结点的单链表和一个整数k,要求将链表中的每k个结点做一次逆转。输入格式一个整数l,一个长度为l的链表,一个整数k。输出格式翻转后的链表。输入样例61 2 3 4 5 64输出样例4 3 2 1 5 6题意很简单,直接上代码#include<iostream>#include<ve原创 2021-09-14 15:37:56 · 749 阅读 · 0 评论 -
基础实验6-2.5:城市间紧急救援
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式输入第一行给出4个正整数N 、M 、S 、D ,其中N (2≤N ≤500)是城市的个数,顺便假设城市的编号为0 ~ (N −1);M 是快速道路的条数;S 是出发地的城市编号;D 是原创 2021-09-12 17:49:51 · 310 阅读 · 0 评论 -
进阶实验2-3.4:素因子分解
题目描述给定某个正整数N,求其素因子分解结果,即给出其因式分解表达式N=p1k1p2k2…pmkm。输入格式输入long int范围内的正整数N。输出格式输出N=p1k1*p2k2…pm^km。pi由小到大输出,当ki==1时可以直接输出pi。输入样例1323输出样例1323=3^ 37^2这个题比较简单直白,直接上代码#include<iostream>#include<math.h>using namespace std;bool is_prime(i原创 2021-09-09 16:56:41 · 372 阅读 · 0 评论 -
问题 A: 案例2-1.3:数列求和
给定某数字A(1=<A<=9)以及非负整数N(0=<N<=100000),求数列之和S=A+AA+AAA+…+AA…A(N个A)。例如A=1,N=3时S=1+11+111=123.输入格式输入数字A(1<=A<=9)与非负整数N。输出格式输出N项数列之和S的值输入样例1 3输出样例123哈哈哈哈这个题,完全用数学方法推导就可以轻松AC。首先,我们研究1+11+111+1111+111……1(n个1)如果我们不考虑进位的话答案就是 12345678…原创 2021-09-08 11:04:04 · 470 阅读 · 1 评论 -
进阶实验8-2.1:逆散列问题
给定长度为 N 的散列表,处理整数最常用的散列映射是 H (x )=x %N。如果我们决定用线性探测解决冲突问题,则给定一个顺序输入的整数序列后,我们可以很容易得到这些整数在散列表中的分布。例如我们将 1、2、3 顺序插入长度为 3 的散列表HT[]后,将得到HT[0]=3,HT[1]=1,HT[2]=2的结果。但是现在要求解决的是“逆散列问题”,即给定整数在散列表中的分布,问这些整数是按什么顺序插入的?输入格式输入的第一行是正整数 N(≤1000),为散列表的长度。第二行给出了 N 个整数,其间用空原创 2021-09-08 09:59:33 · 483 阅读 · 0 评论 -
案例7-1.5:与零交换
将 { 0, 1, 2, …, N-1 } 的任意一个排列进行排序并不困难,这里加一点难度,要求你只能通过一系列的 Swap(0, *) —— 即将一个数字与 0 交换 —— 的操作,将初始序列增序排列。例如对于初始序列 { 4, 0, 2, 1, 3 },我们可以通过下列操作完成排序:Swap(0, 1) ⟹ { 4, 1, 2, 0, 3 }Swap(0, 3) ⟹ { 4, 1, 2, 3, 0 }Swap(0, 4) ⟹ { 0, 1, 2, 3, 4 }本题要求你找出将前 N 个非负整数的原创 2021-09-06 11:26:20 · 1049 阅读 · 1 评论 -
地下迷宫探索
输入格式输入第一行给出三个正整数,分别表示地下迷宫的节点数N(1<N≤1000,表示通道所有交叉点和端点)、边数M(≤3000,表示通道数)和探索起始节点编号S(节点从1到N编号)。随后的M行对应M条边(通道),每行给出一对正整数,分别是该条边直接连通的两个节点的编号。输出格式若可以点亮所有节点的灯,则输出从S开始并以S结束的包含所有节点的序列,序列中相邻的节点一定有边(通道);否则虽然不能点亮所有节点的灯,但还是输出点亮部分灯的节点序列,最后输出0,此时表示迷宫不是连通图。由于深度优先遍历.原创 2021-09-04 22:07:21 · 274 阅读 · 0 评论 -
基础实验8-1.2:直捣黄龙
代码参考了博文题目描述本题是一部战争大片 —— 你需要从己方大本营出发,一路攻城略地杀到敌方大本营。首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营。当这样的路径不唯一时,要求选择可以沿途解放最多城镇的路径。若这样的路径也不唯一,则选择可以有效杀伤最多敌军的路径。输入格式输入第一行给出2个正整数N(2 ≤ N ≤ 200,城镇总数)和K(城镇间道路条数),以及己方大本营和敌方大本营的代号。随后N-1行,每行给出除了己方大本营外的一个城镇的代号和驻守的敌军数量,其间以空格分隔。再原创 2021-08-31 14:30:07 · 752 阅读 · 0 评论 -
PAT 1023 Have Fun with Numbers(和数字一起玩儿!)
题目大致翻译过来就是有一个不大于20位的数,将这个数翻倍如果得到的这个数和原来的数字的排列相同(排列指的是组成这个数的数字个数都是相同的只是顺序不一样),则输出Yes,否则输出No,且输出这个数。因为刚学过一点stl库,就现学现用,用了下stl库里的map(映射)。建立了一个由char类型到int类型的映射,由字符’0’-'9’映射到翻倍后的个位数,定义了overflow的布尔数组是为了判断是否进位。#include<iostream>#include<string>#in原创 2021-07-16 14:24:50 · 99 阅读 · 0 评论 -
PAT 1015 Reversible Primes(反转质数)
题目大致意思就是,输入一个数n,输入一个进制radix,先将数n在radix进制下进行转换,将转换后的数进行反转,如果得到的这个数与原数n都是是素数则输出Yes,否则输出No。废话不多说 直接上代码#include<iostream>#include<algorithm>#include<math.h>#include<queue>using namespace std;int transfer(int n, int radix){ queu原创 2021-07-07 12:48:03 · 109 阅读 · 0 评论 -
PAT 1007 Maximum Subsequence Sum (最大子序列和)
1007 Maximum Subsequence Sum (25 分)Given a sequence of K integers { N1 , N2, …, NK}. A continuous subsequence is defined to be { Ni, Ni+1 , …, Nj } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its原创 2021-07-03 15:40:20 · 106 阅读 · 0 评论 -
PAT 1042 Shuffling Machine(洗牌机器)
原题链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805442671132672题目要求通过编程实现一个洗牌的程序,初始时牌的顺序如下:第1-13张牌的顺序:S1, S2, …, S13,第14-26张牌的顺序:H1, H2, …, H13,第27-39张牌的顺序:C1, C2, …, C13,第40-52张牌的顺序:D1, D2, …, D13,第53-54张牌的顺序:J1(????), J2(????)P原创 2021-08-03 10:46:40 · 103 阅读 · 0 评论 -
PAT 1033 To Fill or Not to Fill(加油还是不加油)
这个题的做法就是贪心算法(greedy algorithm),但是个人认为这个题的算法尤为复杂,本文也是参考了这篇文章题目的原链接戳这里题目要求,输入邮箱的容量(capacity),到终点站的距离(distances),每公里平均油耗数以及输入各个加油站的位置,计算出到达终点时最少花费,若不能到达终点,则输出能跑的最大距离首先:油箱开始为空,所以必须在起点处有加油站,如果没有加油站,根本无法到达终点。开始时有加油站,则考虑加多少油,加油数与后续加油站的油价与加油站的距离和终点站的距离都有关,如果原创 2021-08-05 11:53:28 · 117 阅读 · 0 评论 -
PAT 1024 Palindromic Number (回文数)
题目大致翻译后就是说:如果一个数不是回文数的话,有方法可以将他转变为回文数,转变的方法是:将这个数与这个数的倒序相加,如果仍不是回文数,则重复该过程。具体例子:67 + 76 = 143, and 143 + 341 = 484.就是将67经过两步转变为回文数484。题目的要求是,输入一个数(这个数很大,long long 肯定也要溢出)和k,在k步以内,如果可以将这个数变为回文数,则输出最终的回文数以及经过的步骤数,否则输出已经求得的数与k。这个题主要就是考虑大数加法。直接上源码分析:#inc原创 2021-07-16 15:42:00 · 157 阅读 · 0 评论