
PTA 练习题
摺耳喵
想当分子
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
文件传输 (25分)
当两台计算机双向连通的时候,文件是可以在两台机器间传输的。给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件?输入格式:首先在第一行给出网络中计算机的总数 N (2≤N≤104 ),于是我们假设这些计算机从 1 到 N 编号。随后每行输入按以下格式给出:I c1 c2 其中I表示在计算机c1和c2之间加入连线,使它们连通;或者是C c1 c2 其中C表示查询计算机c1和c2之间能否传输文件;又或者是S这里S表示输入终止。输出格式:对每个C开头的查询,如果原创 2020-11-28 07:21:12 · 544 阅读 · 0 评论 -
整型关键字的平方探测法散列 (25分)
本题的任务很简单:将给定的无重复正整数序列插入一个散列表,输出每个输入的数字在表中的位置。所用的散列函数是 H(key)=key%TSize,其中 TSize 是散列表的表长。要求用平方探测法(只增不减,即H(Key)+i2 )解决冲突。注意散列表的表长最好是个素数。如果输入给定的表长不是素数,你必须将表长重新定义为大于给定表长的最小素数。输入格式:首先第一行给出两个正整数 MSize(≤104 )和 N(≤MSize),分别对应输入的表长和输入数字的个数。随后第二行给出 N 个不重复的正原创 2020-11-28 07:17:54 · 2475 阅读 · 1 评论 -
列出叶结点 (25分)
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。输入格式:首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。输出格式:在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。输入样例:81 -- -0 -2 7- -- -5 -4 6输出样例:4 1 5#i原创 2020-11-28 07:14:07 · 649 阅读 · 0 评论 -
插入排序还是堆排序 (25分)
根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。堆排序也是将输入分为有序和无序两部分,迭代地从无序部分找出最大元素放入有序部分。它利用了大根堆的堆顶元素最大这一特征,使得在当前无序区中选取最大元素变得简单。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?输入格式:输入在第一行给出正整数 N (≤100);随后一行给出原始序列的 N 个整数;原创 2020-11-28 07:11:46 · 4086 阅读 · 3 评论 -
汉密尔顿回路 (25分)
著名的“汉密尔顿(Hamilton)回路问题”是要找一个能遍历图中所有顶点的简单回路(即每个顶点只访问 1 次)。本题就要求你判断任一给定的回路是否汉密尔顿回路。输入格式:首先第一行给出两个正整数:无向图中顶点数 N(2<N≤200)和边数 M。随后 M 行,每行给出一条边的两个端点,格式为“顶点1 顶点2”,其中顶点从 1 到N 编号。再下一行给出一个正整数 K,是待检验的回路的条数。随后 K 行,每行给出一条待检回路,格式为:n V1 V2 ⋯ Vn 其中 n 是回路中的原创 2020-11-28 07:08:19 · 1003 阅读 · 0 评论 -
最短工期 (25分)
一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。输入格式:首先第一行给出两个正整数:项目里程碑的数量 N(≤100)和任务总数 M。这里的里程碑从 0 到 N−1 编号。随后 M 行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结束里程碑 工作时长”,三个数字均为非负整数,以空格分隔。输出格式:如果整个项目的安排是合理可行的,在一行中输原创 2020-11-26 12:56:51 · 3182 阅读 · 0 评论 -
2020-11-25
#include <iostream>#include <vector>#include <algorithm>#include <map>#include <unordered_map>#include <set>#include <cmath>#include <string>#include <queue>#include <stack>#include <原创 2020-11-26 08:39:51 · 591 阅读 · 2 评论 -
串的模式匹配 (25分)
串的模式匹配 (25分)给定两个由英文字母组成的字符串 String 和 Pattern,要求找到 Pattern 在 String 中第一次出现的位置,并将此位置后的 String 的子串输出。如果找不到,则输出“Not Found”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性;数据1:随机数据,String 长度为 105 ,Pattern 长度为 10;数据2:随机数据,String 长度为 105 ,原创 2020-11-26 08:15:29 · 575 阅读 · 0 评论 -
PTA 英文单词排序 (25分)
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。输入格式:输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。输出格式:输出为排序后的结果,每个单词后面都额外输出一个空格。输入样例:blueredyellowgreenpurple#...原创 2020-02-09 22:47:24 · 3887 阅读 · 0 评论 -
PTA 拔河比赛 (100分)
拔河比赛【问题描述】熊出没之探险日记,讲述了夏季休林季,光头强变身成为一名导游,并与熊大熊二一起, 帮助小女孩赵琳去往森林深处找寻儿时玩伴东北虎的故事。 某一天,他们准备进行拔河比赛,森林里很多动物都想来报名参加。经过投票,他们最 终选出了光头强,赵琳,熊大,熊二,吉吉,毛毛。由于不同动物和人的力量明显是不一样 的,所以这个拔河比赛可能会很不公平。于是他们想每 3 个分成一组,并对每位选手的力...原创 2020-02-08 15:54:49 · 1196 阅读 · 0 评论 -
PTA 统计单词数量 (10分)
请编写程序,输入一段文字(以回车结束),统计其中单词的数量并输出。注:这里单词被定义为一串连续的字母。输入格式:一段文字输出格式:单词数量输入样例1:My name's Catherine Flower.输出样例1:5输入样例2:I = U / R输出样例2:3#include <iostream>using namespace std;int...原创 2020-02-08 00:12:19 · 2549 阅读 · 0 评论 -
PTA 素因子分解 (20分)
给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式输入格式:输入long int范围内的正整数 N。输出格式:按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。输入样例:1323 输出样例:1323=3^3*7^2#include ...原创 2020-02-08 00:06:13 · 1917 阅读 · 0 评论 -
PTA 海盗分赃 (25分)
P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略:首先,P 个海盗通过抽签决定 1 - P 的序号。然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得到包括 1 号在内的绝对多数(即大于半数)同意,则按照该分配方案执行,否则 1 号将被投入大海喂鲨鱼;而后依次类似地由第 2 号、第 3 号等等海盗提出方案,直到能够获得绝对多数同意的方案出现为止,或...原创 2020-02-07 23:45:40 · 676 阅读 · 3 评论 -
PTA 二分法求多项式单根 (20分) [分治]
二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0。二分法的步骤为:检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则如果f(a)f(b)<0,则计算中点的值f((a+b)/2);如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则如果f((...原创 2020-02-02 17:29:53 · 492 阅读 · 0 评论 -
PTA IP地址转换 (20分)
一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。输入格式:输入在一行中给出32位二进制字符串。输出格式:在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。输入样例:11001100100101000001010101110010输出样例:204.1...原创 2020-02-02 15:49:32 · 1426 阅读 · 0 评论 -
PTA 装箱问题 (20分) [贪心]
假设有N项物品,大小分别为s1 、s2 、…、si 、…、sN ,其中si 为满足1≤si ≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行...原创 2020-02-02 00:51:36 · 476 阅读 · 0 评论 -
PTA 删除重复字符 (20分)
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。输入格式:输入是一个以回车结束的非空字符串(少于80个字符)。输出格式:输出去重排序后的结果字符串。输入样例:ad2f3adjfeainzzzv输出样例:23adefijnvz#include <iostream>#include <map>using na...原创 2020-02-02 00:12:09 · 768 阅读 · 0 评论 -
PTA 简易连连看 (20分)
本题要求实现一个简易连连看游戏模拟程序。给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x1 ,y1 )、(x2 ,y2 ),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Ove...原创 2020-02-01 23:58:05 · 1000 阅读 · 0 评论 -
PTA 螺旋方阵 (20分)
所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。输入格式:输入在一行中给出一个正整数N(<10)。输出格式:输出N×N的螺旋方阵。每行N个数字,每个数字占3位。输入样例:5输出样例: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7...原创 2020-02-01 17:39:59 · 993 阅读 · 0 评论 -
PTA 梅森数 (20分)
形如2n −1的素数称为梅森数(Mersenne Number)。例如2^ 2 −1= 3 、2 ^ 3 −1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2^31 −1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n −1的梅森数。输入格式:...原创 2020-02-01 15:22:46 · 2249 阅读 · 0 评论 -
PTA 找完数 (20分)
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。输入格式:输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。输出格式:逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均...原创 2020-02-01 14:24:16 · 1814 阅读 · 0 评论 -
PTA 黑洞数 (20分)
黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。任何一个各位数字不全相同的三位数,经有限次“重排求差”操作,总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数。)例如,对三位数207:第1次重排求差得:720 - 27 = 693;第2次重排求差得:963 - 369 =...原创 2020-02-01 00:49:27 · 685 阅读 · 0 评论 -
PTA 验证“哥德巴赫猜想” (20分)
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。输入格式:输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。输出格式:在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分...原创 2020-01-31 21:58:48 · 1867 阅读 · 0 评论 -
PTA 求一元二次方程的根 (20分)
本题目要求一元二次方程的根,结果保留2位小数。输入格式:输入在一行中给出3个浮点系数a、b、c,中间用空格分开。输出格式:根据系数情况,输出不同结果:1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;3)如果方程只有一个根,则直接输出此根;4)如果系数都为0,则...原创 2020-01-31 01:18:18 · 2865 阅读 · 0 评论 -
PTA 找鞍点 (20分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。输入样例1:41 ...原创 2020-01-29 16:27:04 · 794 阅读 · 0 评论 -
PTA 找出不是两个数组共有的元素 (20分)
给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 ...原创 2020-01-26 21:20:05 · 715 阅读 · 0 评论 -
PTA 求幂级数展开的部分和 (20分)
已知函数ex 可以展开为幂级数1+x+x2 /2!+x3 /3!+⋯+xk /k!+⋯。现给定一个实数x,要求利用此幂级数部分和求ex 的近似值,求和一直继续到最后一项的绝对值小于0.00001。输入格式:输入在一行中给出一个实数x∈[0,5]。输出格式:在一行中输出满足条件的幂级数部分和,保留小数点后四位。输入样例:1.2输出样例:3.3201...原创 2020-01-22 21:43:09 · 1336 阅读 · 1 评论 -
PTA 出栈序列的合法性 (25 分) STL—stack
给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, …, N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。输入格式:输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待...原创 2019-11-13 17:26:40 · 1863 阅读 · 0 评论 -
PTA 列车厢调度 (25 分) (stack)
1 ====== <--移动方向 / 3 ===== \ 2 ====== -->移动方向 大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下:有三条平行的列车轨道(1、2、3)以及1-3和...原创 2019-11-12 22:47:45 · 1059 阅读 · 0 评论 -
PTA 逢7击掌 (15分)
一群人围坐成一圈玩报数的游戏。游戏规则是:从1开始报数,若遇到7的倍数或者个位为7的数则击掌代替,若犯错则要受罚。可是这些人都太聪明了,竟然没人犯错!请问同样聪明的你,现在当报数到 n 时,击掌共次数 c 是多少?输入格式n输出格式c输入样例21输出样例4#include <iostream>using namespace std;int main...原创 2020-02-06 23:35:07 · 1474 阅读 · 0 评论 -
PTA 求n以内最大的k个素数以及它们的和 (20分)
本题要求计算并输出不超过n的最大的k个素数以及它们的和。输入格式:输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。输出格式:在一行中按下列格式输出:素数1+素数2+…+素数k=总和值其中素数按递减顺序输出。若n以内不够k个素数,则按实际个数输出。输入样例1:1000 10输出样例1:997+991+983+977+971+967+953+947+941+...原创 2020-02-06 18:06:16 · 971 阅读 · 0 评论 -
PTA 整数分解为若干项之和 (20分) [dfs]
将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…。编程求出正整数N的所有整数分解式子。输入格式:每个输入包含一个测试用例,即正整数N (0<N≤30)。输出格式:按递增顺序输出N的所有整数分解式子。递增顺序是指:对于两个分解序列N1 ={n1 ,n2 ,⋯}和N2 ={m1 ,m2 ,⋯},若...原创 2020-02-06 17:42:29 · 1003 阅读 · 0 评论 -
PTA 切分表达式——写个tokenizer吧 (20分)
[先说点出题背景]这个题是为低年级同学、学C语言的同学准备的,因为,对这部分同学,这个题目编写起来略有一点复杂。如果是高年级、学过了正则表达式(Regular Expression)的同学或者学过了Java等OO语言的同学做这个题,应当发现这题比较简单吧。哦,对了,什么是tokenizer?请自行查询解决。反正在此处不应翻译成“令牌解析器”。[正题]四则运算表达式由运算数(必定包含数字,可能...原创 2020-02-06 00:27:22 · 486 阅读 · 0 评论 -
PTA 有理数均值 (20分)
本题要求编写程序,计算N个有理数的平均值。输入格式:输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。输出格式:在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。输入样例1:41/2 1/6 3/6 ...原创 2020-02-05 17:03:21 · 664 阅读 · 0 评论 -
PTA 删除字符串中的子串 (20分)
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。输入格式:输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。输出格式:在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。输入样例:Tomcat is a male ccatatcat输出样例:Tom is a male #inclu...原创 2020-02-04 22:53:19 · 479 阅读 · 0 评论 -
PTA 龟兔赛跑 (20分)
乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?输入格式:输入在一行中给出比赛时间T(...原创 2020-02-04 18:14:48 · 341 阅读 · 0 评论