刷题
暗魂b
这个作者很懒,什么都没留下…
展开
-
L2-004 这是二叉搜索树吗? (25 分)
L2-004 这是二叉搜索树吗? (25 分)一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。输原创 2022-04-20 21:35:47 · 145 阅读 · 0 评论 -
L3-005 垃圾箱分布 (30 分)
L3-005 垃圾箱分布 (30 分)大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住。所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每个居民点都在距离它一个不太远的范围内。现给定一个居民区的地图,以及若干垃圾箱的候选地点,请你推荐最合适的地点。如果解不唯一,则输出到所有居民点的平均距离最短的那个解。如果这样的解还是不唯一,则输出编号最小的地点。输入格式:输入第一行给出4个正整数:N(≤103)是居民点的个数;M(≤10)是垃圾箱候选地点的个数;K(≤原创 2022-04-17 10:08:50 · 247 阅读 · 0 评论 -
L2-002 链表去重 (25 分)
L2-002 链表去重 (25 分)给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 −1 来表示。随后原创 2022-04-16 15:29:27 · 153 阅读 · 0 评论 -
L2-001 紧急救援
·# L2-001 紧急救援 (25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;原创 2022-04-16 14:12:24 · 179 阅读 · 0 评论 -
L2-039 清点代码库 (25 分)
L2-039 清点代码库 (25 分)上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 int 范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就是原创 2022-04-07 15:18:38 · 160 阅读 · 0 评论 -
树的基本操作加例题
树之详解记住:递归一定有出口,有结束条件基操求二叉树的高度思路:分析二叉树的深度(高度)和它的左、右子树深度之间的关系。从二叉树深度的定义可知,二叉树的深度应为其左、右子树深度的最大值加1。由此,需先分别求得左、右子树的深度,算法中“访问结点”的操作为:求得左、右子树深度的最大值,然后加 1int GetHeight( BinTree BT ){int l=0,r=0;if(!BT)return 0;else{l=GetHeight(BT->Left);r=GetHeigh原创 2022-02-21 22:34:26 · 113 阅读 · 0 评论 -
1057 Stack (30 分)
1057 Stack (30 分)Stack is one of the most fundamental data structures, which is based on the principle of Last In First Out (LIFO). The basic operations include Push (inserting an element onto the top position) and Pop (deleting the top element). Now you原创 2022-01-28 12:08:48 · 445 阅读 · 0 评论 -
1030 Travel Plan (30 分)
1033 To Fill or Not to Fill (25 分)A traveler’s map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to decide the shortest path between his/her starti原创 2021-10-10 21:39:38 · 88 阅读 · 0 评论 -
L2-024 部落 (25 分)
L2-024 部落 (25 分)在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:K P[1] P[2] ⋯ P[K]其中K是小圈子里的人数,P[i](i=1,⋯,K)是小圈子里每个人的编号。这里所有人的编号从1开始连续编号原创 2021-10-07 20:06:58 · 130 阅读 · 0 评论 -
并查集模板 + 例题
并查集初始化:将所有数的祖宗预置为自己void init(){for(int i=1;i<=N;i++){f[i]=i;}}寻找祖宗函数:返回祖宗,并进行路径压缩:将该节点的所有父节点的祖宗指向一个int find(int x){ if(x!=f[x])f[x]=find(f[x]); //递归寻找祖宗 return f[x]; //返回找到的祖宗}合并函数:将两个不同的集合合并,即将一个集合的祖宗指向另一个集合的祖宗void Union(int a,int b)原创 2021-10-03 23:16:38 · 126 阅读 · 0 评论 -
2021-09-15 7-6 利比亚行动(宁波小学2011) (20 分)
7-6 利比亚行动(宁波小学2011) (20 分)题目描述:2011年3月16日以来,利比亚爆发的骚乱不断升级,已严重危及到普通民众和各国在利比亚工作的人员的安全。为了尽快救出在利比亚的同胞,根据利比亚的形势,我国政府告诉每个在利比亚的公民,如何行动才能最快地到达安全的地方,然后由我国派出的飞机、轮船、汽车接回国。 假设利比亚的地图可以描述为一个n行m列的长方形,待拯救的同胞小A在1行1列处,安全的目标位置在n行m列处。小A每次只能向相邻的上、下、左、右四个方向移动,即如果小A现在的位置是i行j列,小原创 2021-09-21 08:39:18 · 973 阅读 · 4 评论 -
1033 旧键盘打字 (20 分)
1033 旧键盘打字 (20 分)getline与cin的区别:getline允许输入的string类型为空, 而cin则不允许旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 105个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,、.、-、+原创 2021-08-02 13:52:33 · 80 阅读 · 0 评论 -
1030 完美数列 (25 分)
1030 完美数列 (25 分)给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。预备知识:int 型范围 大概到10的10次方long long型 为范围更大的整数类型 此题必须用long long 因为乘积已经超过int的范围#include<bits/stdc++.h>using namespace std;int main()原创 2021-08-01 16:24:35 · 81 阅读 · 0 评论 -
1029 旧键盘 (20 分)
1029 旧键盘 (20 分)预备知识:1、string的find函数能够在string里面找出单个字符是否存在具体用法string s1;char c;if(s1.find(c)==string::npos) //表示该字符串中不存在该字符 string::npos代表-1if(s1.find(c)!=-1) //也可以这么写 ,表示该字符串中存在该字符 2、toupper(字符) //将小写字母转变为大写字母的函数 char c1='r'; cout<<to原创 2021-08-01 15:08:11 · 88 阅读 · 0 评论 -
2021-07-18 蓝桥杯真题--第几天
1、3、5、7、8、10、12月每月31天,2月闰年29天,不是闰年就是28天。闰年指年份能被4整除的年,如2000年能被4整除,为闰年。闰年366天,不是闰年365天。区别就是二月的天数。其他的月份就是三十天每月。判断任意年份是否为闰年,需要满足以下条件中的任意一个:① 该年份能被 4 整除同时不能被 100 整除;② 该年份能被400整除。...原创 2021-07-27 15:32:38 · 143 阅读 · 0 评论 -
无重复字符的最长子串(滑动窗口)
预备知识1、哈希表 unordered_set重要函数 count(value)返回1或0 表示哈希表是否存在此值题目描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。测试数据输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"原创 2021-07-12 16:41:08 · 123 阅读 · 0 评论 -
7-2 图图图案 (10 分)
问题描述根据输入的正整数n ,输出一个米字形图案。米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母 例如:n=3时,包含A,B,C;n=4时,包含A,B,C,D。 矩阵的正中间为n个字母中字典序最大的那个,从这个字母开始,沿着西北、正北、东北、正西、正东、西南、正南、东南八个方向各有一条由大写字母组成的直线。并且直线上的字母按字典序依次减小,直到大写字母A。 矩阵的其它位置用英文句号.填充。样例输入一3样例输出一A.A.A.BBB.ABCBA.BB原创 2021-03-14 16:27:16 · 233 阅读 · 0 评论 -
7-5 二叉树的非递归遍历 (70 分)(二叉树的前序建立以及后序中序遍历)
本题要求采用栈实现对二叉树的非递归遍历,包括先序、中序和后序三种遍历方式。输入格式:输入序列是按照先序序列输入,以@表示空结点输出格式:先序、中序和后序遍历序列分别按行输出输入样例:ABC@@D@@E@FG@@@输出样例:ABCDEFGCBDAEGFCDBGFEA#include <stdio.h>#define ElemType char#include<stdlib.h>//节点声明,数据域、左孩子指针、右孩子指针typedef struct BiT原创 2021-03-07 21:15:28 · 573 阅读 · 1 评论 -
7-5 单身狗 (25 分)
7-5 单身狗 (25 分)“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数 N(≤50000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤10000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。输出格式:原创 2021-02-18 12:55:57 · 857 阅读 · 0 评论 -
set和map的用法例题
7-4 悄悄关注 (25 分)//天梯题目新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注列表,格式如下:人数N 用户1 用户2 …… 用户N其中N是不超过5000的正整数,每个用户i(i=1, …, N)是被其关注的用户的ID,是长度为4位的由数字和英文字母组成的字符串,各项间以空原创 2021-02-17 22:04:59 · 109 阅读 · 0 评论 -
7-4 求一元二次方程的根 (20分)
7-4 求一元二次方程的根 (20分)本题目要求一元二次方程的根,结果保留2位小数。输入格式:输入在一行中给出3个浮点系数a、b、c,中间用空格分开。输出格式:根据系数情况,输出不同结果:1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;3)如果方程只有一个根,则直接输出此根;4)如果系数都为0,则输出"Zero Equation";5)如果a和b为0,c不为0,则输原创 2020-10-18 23:25:25 · 3585 阅读 · 0 评论 -
1003 我要通过! (20 分)
1003 我要通过! (20分)“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空原创 2020-09-26 11:10:53 · 62 阅读 · 0 评论 -
1040 有几个PAT (25分)
1040 有几个PAT (25分)字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。现给定字符串,问一共可以形成多少个 PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105 ,只包含 P、A、T 三种字母。输出格式:在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。输入样例:原创 2020-08-16 22:12:05 · 82 阅读 · 0 评论 -
1038 统计同成绩学生 (20分)
1038 统计同成绩学生 (20分)本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。输入格式:输入在第 1 行给出不超过 105 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。输出格式:在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。输入样例:1060 75 90 55 75 99 82 9原创 2020-08-14 23:02:03 · 80 阅读 · 0 评论 -
1037 在霍格沃茨找零钱 (20分)
1037 在霍格沃茨找零钱 (20分)如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱 P 和他实付的钱 A,你的任务是写一个程序来计算他应该被找的零钱。输入格式:输入在 1 行中分别给出 P 和 A,格式为 Galleon.Sickle.Knut,其间用 1 个空格分隔。这里 Galleon 是 [0, 107 ] 区间内的整原创 2020-08-14 22:17:32 · 119 阅读 · 0 评论 -
L1-059 敲笨钟 (20分)
L1-059 敲笨钟 (20分)微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。输入格式:输入首原创 2020-07-22 21:51:34 · 442 阅读 · 0 评论 -
L1-046 整除光棍 (20分)
L1-046 整除光棍 (20分)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s原创 2020-07-16 23:37:03 · 406 阅读 · 0 评论 -
L1-020 帅到没朋友 (20分)[C语言实现]
L1-020 帅到没朋友 (20分)当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。输入格式:输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。注意原创 2020-07-09 14:22:55 · 800 阅读 · 2 评论 -
L1-011 A-B (20分)
L1-011 A-B (20分)本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。输入格式:输入在2行中先后给出字符串A和B。两字符串的长度都不超过104 ,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。输出格式:在一行中打印出A−B的结果字符串。输入样例:I love GPLT! It’s a fun game!aeiou输出样例:I lv GPLT! I原创 2020-07-03 22:25:05 · 185 阅读 · 0 评论 -
L1-007 念数字 (10分)
L1-007 念数字 (10分)输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:0: ling1: yi2: er3: san4: si5: wu6: liu7: qi8: ba9: jiu输入格式:输入在一行中给出一个整数,如:1234。提示:整数包括负数、零和正数。输出格式:在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。输入样例:-600输出样例:fu原创 2020-06-27 22:36:11 · 485 阅读 · 0 评论 -
L1-006 连续因子 (20分)
L1-006 连续因子 (20分)一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数 N(1<N<231)。输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。输入样例原创 2020-06-27 22:19:14 · 136 阅读 · 0 评论 -
L1-005 考试座位号 (15分) 【C语言】
L1-005 考试座位号 (15分)每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式:输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组原创 2020-06-20 15:42:42 · 1258 阅读 · 0 评论 -
L1-003 个位数统计 (15分)【C语言】
L1-003 个位数统计 (15分)给定一个 k 位整数 N=dk−1 10k−1 +⋯+d1 101 +d0 (0≤di ≤9, i=0,⋯,k−1, dk−1 >0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。输出格式:对 N 中每一种不同的个位数字,以 D:M原创 2020-06-20 14:58:03 · 1137 阅读 · 1 评论