算法

119 篇文章

「PAT乙级真题解析」Basic Level 1100 校庆 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了一组校友ID, 然后给定了一组来宾ID, 要求输出是校友的来宾中, 最年长的一位。 如果来宾中没有校友, 则输出来宾中最年长的一位。 由于涉及到查询, 所以本题的重点在于数据的存储与查询。ID是由数字和大写字母组成, 所以需要存储成字符串。 查询时的比较可以使用字符串比较函数。 同时为了性能考虑, 可能先对要查询的校友ID进行排序, 然后查询时使用二分查找。 进一步性能考虑, 存储最值时可以存储最年长校友在数组中的索引而不是直接存储字符串, 避免多次字符串拷贝。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1097 矩阵行平移 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了明确的步骤, 要求按照给定方式进行"平移"操作, 然后计算各行元素的和并输出。 计算各行元素之和以及输出元素和没有额外要求, 所以关键在于如何按照题设要求进行平移。

#算法#需求分析#c语言

「PAT乙级真题解析」Basic Level 1096 大美数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求过于明确, 只想到用穷举法。 由于是检查4个正因数之和是否能被原整数整除,所以穷举需要写四重循环。 由于因数组合的顺序不影响因数和, 即也不影响被原整数整除, 所以内层循环都以上一层循环的值+1作为初始值。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1095 解码PAT准考证 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一组数据, 然后再给定一组查询, 要求根据查询要求输出对应的数据. 由于本题涉及到查询/统计, 所以核心在于数据的存储与目标数据的查询。 由于输出的信息涉及到按考场和按考生分类统计数据, 所以需要分别建立考生和考场两个模型。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1090 危险品装箱 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一组不相容的数值对, 然后给定多组数值, 要求检查每组数值中是否存在不相容的数值对。 所以本题的核心是数据的存储, 然后循环进行数据查询和比对。 如果使用的编程语言有哈希表和集合的数据结构, 可以直接将编号作为哈希表的键, 使用集合作为值来存储与其不相容的数值。 C语言中, 需要用数组存储, 然后手动遍历数据来实现"检查元素是否在集合中"。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1102 教超冠军卷 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一组销量和单价, 要求计算出销量最高的商品以及销售总额最高的商品。 因为本题要求计算最值, 所以显然是一道最值题, 需要做的就是数据存储与比较(/统计)。 因为只求最值, 给出的ID唯一(即不存在商品数据合并的操作), 所以只需要储存目前的最值, 然后每次新数据进来进行比较即可, 比当前最值小的数据不需要存储。

#算法#需求分析#c语言

「PAT乙级真题解析」Basic Level 1080 MOOC期终成绩 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给出了三批数据, 分别代表编程成绩, 期中考和期末考成绩。 要求按照给定的公式计算加权总分, 便且给出总分不低于60分的学生信息。 所以, 我们需要做的就是数据存储, 然后进行数据计算, 然后挨个检查进行输出。 由于不同数据是在不同批次给出的, 而且同一个学生代表不同项目成绩需要绑定在一起, 所以涉及到以ID作为唯一标志, 查询ID, 如果ID相同, 则更新该ID下对应的项目成绩。

#需求分析#pat考试#c语言

「PAT乙级真题解析」Basic Level 1110 区块反转 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定链表头节点地址, 总节点个数, 区块大小, 要求按照指定方式以区块为单位, 反转链表中的区块顺序。 指定方式为: 按照给定区块大小将链表划分为不同区块, 然后将区块逆序, 区块内元素相对顺序不变。 由于该题是通过输入校验, 所以如果在考试中, 为了追求更快获得正确解, 可以选择直接按照指定方式输出各个节点信息的方式。 比如: 将各个链表元素按照连接顺序放入连续的数组中, 然后按照给定长度划分区块, 最后直接从最后一个区块往第一个区块的顺序,按照要求输出。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1075 链表元素分类 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定链表头节点地址, 总节点个数, 元素分类阈值, 要求按照指定的方式对链表元素进行分类排序。 指定方式为: 将元素的值按照"大于0", "大于等于0且小于等于给定阈值", "大于给定阈值"分为三组, 分组中的元素保持在原始链表中的相对顺序, 最后按照指定格式输出分类排序后的各个节点信息。 由于该题是通过输入校验, 所以如果在考试中, 为了追求更快获得正确解, 可以选择直接按照指定方式输出各个节点信息的方式。 比如: 将各个链表元素按照连接顺序放入连续的数组中, 然后给定规则对数组元素进行排序, 最后直

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1025 反转链表 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一个链表头, 总节点个数, 反转长度, 要求按照指定方式反转链表。 指定反转方式为: 按照给定的反转长度将链表分组, 反转每一组里的元素(如果最后一组元素不足则不反转) 注意, 需要每一组反转后的末尾元素连接下一组反转后的首个元素。 由于该题是通过输入校验, 所以如果在考试中, 为了追求更快获得正确解, 可以选择直接按照指定方式输出各个节点信息的方式。 比如: 将各个链表元素按照连接顺序放入连续的数组中, 然后按照划分反转好每一个元素, 最后直接按照要求输出。

#数据结构#算法#pat考试

「PAT乙级真题解析」Basic Level 1105 链表合并 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个链表头, 总的节点数目, 要求将两个链表按指定方式合并。 指定合并方式为: 每两个长链表元素后要插入一个短链表元素, 直到短链表元素插入完毕则得到合并后的链表。 由于该题是通过输入校验, 所以如果在考试中, 为了追求更快获得正确解, 可以选择直接按照指定方式输出各个节点信息的方式。 比如: 整理好两个链表之后, 每输出两个长链表元素, 就输出一个短链表元素, 如果短链表输出完毕, 则直接输出长链表元素直到输出完毕。

#数据结构#算法#pat考试

「PAT乙级真题解析」Basic Level 1085 PAT单位排行 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了一组学生的信息(准考证号, 得分, 学校), 要求以学校为单位, 统计每个学校的考生人数以及加权总分。 然后将统计结果按照分数排名, 按照排名由高到低输出各个学校的排名、名称、加权总分和考生人数。 所以过程主要分为统计(数据存储)和排序输出两个部分

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1089 狼人杀-简单版 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定假设狼人杀中N名玩家有2人是狼人, 有2名玩家说的不是实话, 只有一个狼人说谎。要求计算出扮演狼人的玩家。 题目的重点在于身份的确认和发言真假的确认。 因为题设固定了狼人的数量只有2个, 所以我们需要从N名玩家中假设2个玩家是狼人, 其余玩家就都认为是好人, 身份的确认就完成了。 发言真假确认通过题设给定的规则, 如果发言认为某人是狼人且该玩家确认是狼人, 则为真; 或者认为某人不是狼人且该玩家确实不是狼人, 则为真; 其余都为假。 最后只需要检查 全部谎言的数量是否为2 且 狼人说谎的数量是否为1

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1088 三人行 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定三个数值ability, X, Y, 以及三个关系式(三元一次不等式组). 要求根据X, Y计算出满足三个关系式的最大解. 然后根据ability跟不等式组解出来的三个值的大小关系输出对应的关键字. 如果不等式组没有解, 则输出"No Solution".

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1104 天长地久 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求给定一个位数K, 一个各位数字之和m, 要求满足条件的A. 需要满足的条件是: A+1的各位数字之和n与给定的m的最大公约数是一个大于2的素数。 题目就是有点绕, 其他还好。 最容易想到的方式就是穷举进行条件检测, 但是会有性能问题, 比如测试点5对穷举的作答就会提示运行超时。

#算法#数据结构

「PAT乙级真题解析」Basic Level 1094 谷歌的招聘 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一串数字串以及一个位数, 要求找出最早出现的长度等于指定位数, 且数值为素数的数字串。 所以最直觉的方法就是从数字串第一位开始, 截取指定位数的数字串, 然后检查其代表的数值是否是素数。 如果是素数则输出该数字串, 如果遍历完毕都没有符合条件的数字串, 则输出"404"。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1084 外观数列 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设定义外观数列就是第n项是对第n-1项各个数字连续出现次数的统计, 跟"1078 字符串压缩与解压"类似。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1074 宇宙无敌加法器 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定三个字符串, 第一个字符串代表各个数位的进制数, 第二个和第三个字符串代表十进制数值(题目说是PAT数, 但是当成十进制数处理就可以)。 要求将两个数值相加之后按照给定的各个数位进制进位之后, 输出相加结果。 由于给定的两个数位数不一定相同, 所以我们需要高位补零让两个数值位数相同, 然后从末尾开始往最高位, 按位相加然后进位计算两数之和。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1099 性感素数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设定义满足(p, p+6)都是素数的p和p+6两个数都是性感素数。 给定正整数N, 要求检查N是否是性感素数。 如果是, 则输出"Yes"以及和N配对的较小的性感素数。 如果不是, 则输出大于N的最小性感素数。

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1103 缘分数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个关系式`a^3 - (a-1)^3 = c^2`和`b^2 + (b-1)^2 = c`, 要求指定区间内满足两个等式的a和b。 即, 要求指定区间内满足等式`a^3 - (a-1)^3 = (b^2 + (b-1)^2)^2`的a和b。 等式可以化简为: `3*a^2 - 3*a = 4*b^4 - 8*b^3 + 8*b^2 - 4*b`

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1109 擅长C (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定26个英文字母的输出格式, 然后给定几个单词(由非大写英文字母隔开), 要求用给定的输出格式输出这些英文单词。 那么事情就简单了, 如果我们只看后半部分的话, 那基本就相当于`if char == 'A': print('A')`的级别了, 只是现在给定了各个英文字母的输出格式, 所以是`if word == "HELLO": print(指定格式("HELLO"))`。 所以重点在于将指定的输出格式存储下来, 然后在最后检查英文句子的时候输出.

#c语言#算法#pat考试

「PAT乙级真题解析」Basic Level 1108 String复读机 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求将给定的字符串按照"String"的顺序输出, 并且忽略"String"之外的字符。 同时说明了"String"中6个字符出现的频次不保证相同, 输出时若某种字符已输出完毕, 则跳过该字符. 所以, 我们要做的是统计"String"中各个字符在给定的字符串中出现的次数作为要输出的个数, 然后按照"String"的顺序循环检查每一个字符当前的剩余个数, 如果不等于0, 则输出并将次数减一, 直到这6个字符的剩余个数都为0为止。

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1107 老鼠爱大米 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定多组数值, 要求分别输出每组数中的最大值, 以及输出全部数值的最大值。so easy.

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1106 2019数列 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求很明确, 给定一个递推数列, 并第n项是第n-4到第n-1项的和的个位数字。 要求给定正整数n之后, 输出前n项. 于是我们的重点在于如何实现递推式得到数列的新一项, 然后一直生成到指定项即可。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1101 B是A的多少倍 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设明确要求按照其给定的步骤变换给定的正整数, 然后输出变换后的正整数是输入正整数的多少倍。 所以重点在于转换逻辑的编写。由于给定的正整数不大于10的9次方, 所以可以用整型存储。 但是涉及到部分数位的移动, 使用整型时获取各个数位的数字时需要从后往前, 这里不太适合, 所以最佳方式时使用字符串存储正整数, 变换之后得到新的字符串, 然后将两个字符串转换为整型后相除。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1098 岩洞施工 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了岩洞中每一个位置的顶部高度和底部高度, 要求判断是否能够将一个单位的长管道水平送入岩洞中。 由于是水平送入, 所以只需要判断顶部的最低位置和底部的最高位置之间的距离是否大于长管道的宽度。 由于题设给定长管道为1个单位宽, 所以我们只需要求出顶部的最低位置, 底部的最高位置, 检查二者差是否大于1即可。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1027 打印沙漏 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了可用的符号数量, 要求输出能够打印出的最大的沙漏。 如果知道要输出几层, 问题会变得简单,就是一个循环加输出的操作。 所以我们需要先计算出要输出几层。

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1005 继续(3n+1)猜想 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目提出一个新概念"关键数", 并给出其定义: 在进行(3n+1)猜想时, 不会出现在其他给定数值的计算过程中的, 就是关键数。 这意味着, 如果我们要计算给定的一组数中, 哪些数是关键数, 则需要对这些数进行(3n+1)猜想的计算, 然后记录计算过程中出现的各个数, 等到完全计算完毕后与给定的数值进行对比, 得到差异即可。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1093 字符串A+B (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求找出给定的两个字符串中字符的并集,并且按照在字符串中出现的顺序输出并集。 这意味着我们需要依次输出字符串中的各个字符, 如果这个字符已经被输出过了, 就不再输出。 C语言中没有原生集合类型, 可以使用数组代替。

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1092 最好吃的月饼 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求统计各种月饼在各个城市的销量总和, 然后输出销量最高的月饼的最大销量和对应的种类编号。 如果销量并列第一, 按照编号递增顺序输出。 这意味着我们需要先统计出各种月饼的总销量,然后比较得出最大的销量, 然后从编号由小到大的顺序, 输出销量等于最大销量的种类编号。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1091 N-自守数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定一个定义, 给定一组数, 要求输出能够让每个数符合题设定义的正整数, 不存在这样的正整数时输出"No". 需要满足的条件是, 正整数N乘以给定的数K的平方得到的乘积以K为结尾。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1087 有多少不同的值 (问题分析+完整步骤+伪代码描述+提交通过代码)

- 题设要求给定一个正整数N,然后给定一个公式, 要求从1到正整数N分别代入到公式中得到的结果中, 可以得到哪些值的集合。 这题目的要求……也太简单明确了吧…… - 可以用数据模型集合来存储结果. C语言中没有集合, 可以使用数组存储结果, 索引对应结果, 索引位置的值对应出现的次数.

#算法#c语言#数据结构

「PAT乙级真题解析」Basic Level 1086 就不告诉你 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求, 计算给定两个数的乘积, 然后将乘积的各个数字颠倒后输出对应的数值。 要求很明确,算乘积,然后逆转顺序,最后输出,给定的数值在整型范围内,可以直接存储为整型。

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1083 是否存在相等的差 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设设定, 给定一组数, 要求计算每一个数与它的序号的差值, 给出重复的差值以及重复的次数, 。于是我们明白我们要做的是计算和统计。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1082 射击比赛 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一组坐标以及对应的ID,要求计算哪个坐标离远点最近和最远,这是一道最值计算问题。 与原点的距离等于两个坐标值分别平方相加后的正平方根。即, distance = sqrt(x^2 + y^2)

#pat考试#c语言#算法

「PAT乙级真题解析」Basic Level 1081 检查密码 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求按照给定标准检查密码是否合法。标准已明确给出, 核心在于把标准准确表示为if条件。

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1079 延迟的回文数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求将一个不是回文数的数转换为回文数,并且给出了具体的转换步骤,看到给出了具体的步骤,我们就知道这是一道模拟题。 具体步骤会将给定的数值各个数位上的数字逆序排列得到另一个数,然后两数相加得到新的数值。 重复上述过程直到得到回文数或者操作次数达到10次认为转换失败。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1003 我要通过! (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求根据给定的三条标准, 检查输入的文本是否正确, 正确则输出"YES", 不正确则输出"NO". 所以核心就是如果将题设给定的三个判断条件明确成编程语言的if条件.

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1078 字符串压缩与解压 (问题分析+完整步骤+伪代码描述+提交通过代码)

- 题设要求按照给定的方式对字符串进行压缩,以及对给定压缩字符串按照约定进行解压。 - 关于如何压缩的方式, 题设已经给出, 所以仍然是模拟压缩的过程.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1077 互评成绩计算 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求计算每个组的互评成绩, 并且给出了互评成绩的计算方式, 毫无疑问, 这是一道模拟题. 需要做的是明确题设给定的步骤然后翻译成代码。

#pat考试#c语言#算法

「PAT甲级真题解析」Advanced Level 1009 Product of Polynomials

题设要求计算两个多项式的积, 同题目1002一样, 多项式求积是有固定步骤的, 所以这是一道模拟题。 多项式求积的规则为: 将两个多项式中的项两两相乘, 相乘得到的结果项指数为两个项的和, 系数为两个项的乘积。 这意味着我们只需要用一个两重循环就可以覆盖所谓的"两两相乘", 将所有求得的结果项相加就是题设要求的多项式乘积。

#c++#算法#pat考试

「PAT甲级真题解析」Advanced Level 1008 Elevator

1. 题设要求模拟电梯的升降,并计算完成所有楼层停靠要求所需要的总时间。 2. 由于电梯停考规则和停靠时间题设已经明确给出, 所以这是一道只需要我们按照规则翻译成代码的模拟题。

#c++#数据结构#pat考试

「PAT甲级真题解析」Advanced Level 1007 Maximum Subsequence Sum

题设给定一组序列, 要求最大的子序列和. (子序列是要求数在原数字中位置连续, 而子数组不要求)。 理论上, 我们只要枚举出所有的子序列进行求和, 然后记录和最大的一组即可。

#数据结构#算法#c++

「PAT甲级真题解析」Advanced Level 1006 Sign In and Sign Out

1. 题目给出一组学生进入机房的进入时间和离开时间, 要求找出最早进入机房开门的人以及最晚离开机房锁门的人. 到这里我们可以看出题目的重点在于查找, 而查找会涉及到数据的存储, 如果存储数据以及在储存的数据中进行查找是我们要考虑的核心。 2. 我们可以存储所有的进入时间和对应的学生ID, 然后比较出最早的进入时间。但我们在乙级的题目练习中多次提到, 数据存储是为了使用, 在这种情况下, 进入时间在进行一次比较之后就不会再用到了, 所以可以不需要存储全部进入时间, 而是直接存储当前最早进入时间然后不断更新。

#算法#c++#数据结构

「PAT甲级真题解析」Advanced Level 1005 Spell It Right

题设明确要求我们将给定的一个非负数的各个数字相加求和, 然后输出这个和各个数字的英文形式, 妥妥的模拟题, 而且步骤已经非常明确。 需要考虑的是给定的非负数最大可以是10^100(101位, 1个一后面跟了100个零), 所以需要用字符串来存储整数.

#算法#c++#需求分析

「PAT甲级真题解析」Advanced Level 1004 Counting Leaves

1. 题设要求按照从根结点开始自顶向下输出树结构每一层的叶子结点数目。 2. 这意味着我们需要设置计数器, 然后遍历树的每一个结点, 然后检查该结点是否是叶子结点, 如果是叶子结点, 则将计数器中该层次叶子结点个数+1. 3. 遍历树结构叶子结点可以用深度优先dfs搜索和广度优先搜索bfs.

#深度优先#算法#数据结构

「PAT甲级真题解析」Advanced Level 1002 A+B for Polynomials

题目要求计算两个多项式的和, 多项式求和是有固定步骤的, 所以这是一道根据定义/规则精准翻译为代码的模拟题。 多项和求和的规则为: 将两个多项式中指数相同的项的系数相加作为和多项式该指数项的系数, 这意味着, 如果我们用将所有项都罗列出来(没有的项表示为系数为0的形式), 则只要依次做N次加法就可以求得和多项式各个项的系数。

#算法#数据结构#c++

「PAT甲级真题解析」Advanced Level 1001 A+B Format

题设要求两个整数A和B的和, 并且按照指定格式输出。 由于给定整数的范围在整型范围内, 所以可以用整型直接存储和相加。 重点在于实现要求的用逗号将每三个数字进行分组。

#数据结构#算法#c++

「PAT乙级真题解析」Basic Level 1076 Wifi密码 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求按照给定规则将给定的输入最终翻译成一串数字并输出,所以是一道模拟题。 由于题目设定的场景是题目的答案编号对应着wi-fi密码中的一位数字, 所以输入是(选项编号 - 是否是正确答案), 我们需要做的是读取选项编号, 和是否是正确答案的标志位, 如果是正确答案, 则输出对应的选项编号即可.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1073 多选题常见计分法 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求按照老师批改多选题的方法来计算学生的总分, 并且统计哪道题的选项选错的人最多。(选错的情况包括: 选了错误的和没选正确的两种) 多选题得分的规则为: 选择与答案一致得全部分数, 漏选得一半分数, 一旦选了正确选项之外的选项, 不得分。 本题的核心在于计算单道多选题学生得分的逻辑, 以及统计选项错误情况的逻辑; 由于要统计选项错误的情况, 所以不管能不能通过学生作答个数与正确选项个数之间关系直接得分情况, 都要挨个检查选项。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1072 开学寄语 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求查找学生携带的物品中是否有被禁止的物品。这涉及到"查找/搜索"。 由于物品编号是正整数, 所以我们可以用C的数组来存储禁止携带的物品编号, 数组索引作为编码, 索引位置值为1代表禁止携带。 搜索时只需要用学生携带的物品编号按索引查询数组对应位置的值是否为1, 就可以知道是否是禁止携带的物品。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1071 小赌怡情 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求按照筹码计算规则计算玩家的下注、输赢以及筹码剩余情况, 并出给了具体的步骤规则, 所以这是一道模拟题, 需要明确规则编写逻辑; 计算环节分为: - 读取玩家下注 - 检查玩家下注与筹码是否合理 - 计算游戏结果和玩家收益 - 按照规则输出

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1070 结绳 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求将一些一段一段的绳子串连起来, 但是每次串连的时候需要把两段绳子都对着折后套接在一起。要求能够串连出的最大长度。 这意味着进行一次串连,两端绳子的长度都会减半, 一段绳子参与串连的次数越多(串连成新的后再去与其他绳子串连,然后再去串连,如此重复)最终能提供的长度就约短。 这意味着越长的绳子最好放在越后面进行串连,这样串连的次数会更少,能贡献的长度就越长。 所以这道题就是将给定的各段绳子长度进行升序排列, 然后按排序后顺序进行串连计算最终长度。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1069 微博转发抽奖 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求从给定的一组字符串中的指定位置开始, 按照指定的间隔选择对应位置的字符串进行打印, 但是相同的字符串只能被打印一次(所以这里需要记录是否被打印过的标志位). 值得说明的是, 由于C语言中没有"字符串"类型, 所以用二维字符数组来作为一维字符串数组. 另外, 字符串是否被打印过的记录是一个典型的哈希表记录并用于查询的过程, 但是C语言中没有字典或集合等哈希表数据结构, 所以需要使用"字符串数组/二维字符数组"存储打印过的字符串, 通过对数组的遍历查询是否某个字符串已经在数组中来判断是否已经打印过该

#数据结构#算法#需求分析

「PAT乙级真题解析」Basic Level 1068 万绿丛中一点红 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一幅画(/矩阵/二维数组), 要求检查每一个点和周围的点的差值是否都超过给定阈值. 同时要求统计每一个点值出现的次数, 给出只出现过一次并且跟周围点的差值都超过阈值的点。 如果这样的点不存在, 则输出"Not Exist"; 如果这样的点有多个, 则输出"Not Unique"; 否则, 按格式"(列号, 行号): 点值"输出该点信息

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1067 试密码 (问题分析+完整步骤+伪代码描述+提交通过代码)

如题目所示, 这道题的任务就是我们日常的输入密码, 检查密码是否等于正确密码的模拟题. 所以重点在于明确题目的要求, 然后准确地翻译成程序语言. 题目要求: - 最多只可以尝试指定次数 - 读到单个字符"#"时需要结束尝试 - 保证至少尝试一次 - 如果密码正确, 则输出"Welcome in"然后结束程序 - 如果密码错误, 则输出"Wrong password: 用户输入的错误密码" - 如果达到最大尝试次数还是没有输入正确密码, 则输出"Account locked"然后结束程序

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1066 图像过滤 (问题分析+完整步骤+伪代码描述+提交通过代码)

十分常规的一个问题, 题目给定一个场景, 要求按照题设要求, 将满足条件的值进行指定处理, 所以这可以认为是模拟题, 只需要将题设要求翻译成代码即可. 题设给定一副图像(/矩阵/二维数组), 要求检查每一个点的值是否在给定的两个值之间, 如果是则替换成指定值. 最后输出处理后的图像(/矩阵/二维数组)

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1065 单身狗 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定几组数对, 代表几对情侣, 随后给出一组数, 要求判断哪些数没有和它的情侣数一起出现在这组数中. 看到这里, 这道题明显是一道查找题/搜索题, 搜索题的主要核心是数据存储与比较。 于是这里只涉及5位整数, 所以存储用整型数组存储即可, 数组的索引和索引位置所存储数值代表一对情侣数。 而查找的过程, 只需要使用一个数组作为是否出席的标志位数组, 将给出的所有数作为索引值, 索引位置值置为1, 代表这些数出现过。 然后再次遍历给定的这组数, 对于每一个数, 先从第一个数组中拿到其对应的情侣数, 然后到标

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1064 朋友数 (问题分析+完整步骤+伪代码描述+提交通过代码)

这道题依旧是一道"给出定义要求计算"的题目, 计算之后要求做的是统计. (1063谱半径是要求再最值) 所以依旧是按照定义翻译成程序语言, 然后进行常规统计. 再次强调,统计数据要关注统计的是哪些数据以及存储形式, 这里统计的是数值出现的次数, 所以只需要用数组存储即可. 由于题设给定"朋友数"是各个数位上数字的和, 涉及到各个数位数字的读取(可以用整数存储然后不断取余, 这题的数值也不会有溢出问题), 以下采用字符串形式存储数值用索引访问各位数字的方式进行计算。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1063 计算谱半径 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定了"谱半径"的定义, 然后要求谱半径, 所以按照定义翻译成程序语言即可。 由于谱半径是一组值中的最大值, 所以这题主要分为求出一组值以及求这组值的最大值。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1062 最简分数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定两个有理数分数形式的分子和分母, 以及一个整数K, 要求给出介于两个有理数之间的最简分数, 且分数的分母得是整数. 因为给定了一个整数作为分母, 我们要查找的范围其实是分子为1到K, 分母为K的K个分数.

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1061 判断题 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求统计学生们判断题得分, 这是一道统计题。 一如既往, 对统计题, 我们先考虑要统计的数据以及存储形式。 由于是判断题, 题目给出的输入(题目分值, 答案以及学生的作答)都是数值形式, 所以存储为数组是合适且符合直觉的方式。 输入次序作为题目序号, 比较相同序号的题目答案和学生作答是否一致即可判断学生是否正确作答

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1060 爱丁顿数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求统计所有满足E天超过E英里的整数E, 然后给出E的最大值. 求一组数中的最大值是一个常规的过程, 所以本题的核心是如果统计所有E天超过E英里的E. 题设给出的数据形式是第i天跑了j英里, 我们需要统计的是跑超过j英里的天数. 所以我们需要先统计跑了j英里的天数, 然后从最大的距离开始, 将该距离加到小于这个距离的所有距离的天数统计中.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1059 C语言竞赛 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求按照参赛选手名次和颁奖规则为选手颁奖。 由于是题目给定了明确的规则, 所以仍然是模拟题的思路。

#c语言#算法#数据结构

「PAT乙级真题解析」Basic Level 1058 选择题 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求对比给定的题目信息(分值, 正确选项)和学生的作答, 计算学生分数以及统计出错次数最多的题目. 这意味着如何读取和存储输入(题目信息, 学生作答)以及对比统计是核心内容.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1057 数零壹 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了"数零壹"的具体步骤, 所以这是一道模拟题, 主要是明确题目要求的步骤, 翻译成代码即可. 其中涉及: - 英文字母的判断 - 英文字母在字母表中的序号获取 - 各个数位的数字求和 - 二进制转换 - 二进制数的各个数位数字的统计

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1056 组合数的和 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定N个非零数字, 要求计算可以组成的所有2位数之和。 由于数字非零, 所以每一个数字都可以选在个位或者十位。 如果一个数字选择放在十位, 则总和要加上它的十倍; 如果选择放在个位, 则总和要加上它本身。 所以, 总和等于每一个数字在十位所代表的值+其在个位所代表的值. 即所有数字之和 * 11

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1055 集体照 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求将给定的N个人按要求排成K排, 由于有明确列出要求, 所以我们初步判断这是一道按照要求翻译成代码的模拟题。 由于身高和名称是绑定关系, 排序用的是身高, 输出用的是名称, 之前分析其他题目的时候说过, 这种时候要将绑定的信息存储为类键值对结构, 放在一起, C语言中这意味着结构体。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1054 求平均值 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定N个实数, 要求计算平均值. 平均值的计算我们非常熟悉, 所以不会是本题的核心. 题设设定, 输入数据可能非法, 计算平均值的时候不能将非法数包括在内. 所以本题的核心是识别非法输入实数和识别合法输入实数. 由于输入可能是非数字, 且涉及到对每一位的检查, 所以用字符串形式存储输入的实数, 计算和时再转为浮点数.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1052 卖个萌 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定三组符号集合作为"手", "眼", "口"的姿势, 要求根据用户输入的序号使用对应序号的"手", "眼", "口"以"[左手]([左眼][口][右眼])[右手]"的形式输出表情。 输出的部分很简单, 只要使用序号作为索引取到符号输出即可, 所以本题的重点不是输出, 而是如何从输入生成用于取数的符号集合. 对于一些封装层次比较高的语言, 完全可以使用正则之类的方法提取出符号生成集合. 也可以使用字符串分割的方式生成集合. 对于C语言, 需要自行实现符号提取逻辑.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1053 住房空置率 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求统计符合住房空置条件的房屋比例。这是一道统计题。 需要统计的数据是, 可能空置的房屋数量, 空置的房屋数量; 可能空置的条件: 比较每天的用电量是否小于给定用电量的天数, 如果天数超过一般, 则为可能空置. 空置的条件: 已经认定是可能空置的房间, 且比较用电量的天数大于给定天数。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1051 复数乘法 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给出了复数的极坐标形式和三角形式的对应公式. 要求输出的结果是三角形式, 乘积计算时也主要使用三角形式, 所以本题就是形式转换加对应部分的乘法计算。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1050 螺旋矩阵 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求将给定的数组按非降序排序,然后按照螺旋路线排列成矩阵。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1049 数列的片段和 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求按照给定方式截取数组得到所有可能片段,然后求各个片段和的总和。 截取片段的方式是, 截取任意连续的几个数即可, 也就是取连续子数组。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1048 数字加密 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求按照步骤进行计算, 并输出计算结果。 这种明确给出计算步骤的题目妥妥的"模拟题", 明确题设要求的计算步骤后, 翻译成代码即可。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1047 编程团体赛 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求给出冠军队伍的编号和总成绩。这是一道统计题(统计各队伍分数)/最值题(分数最高) 这类题目已经出现多次, 主要思路为: 统计各个队伍分数后对统计结果进行比较求最值。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1046 划拳 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求统计甲乙两人划拳分别喝了几杯酒。所以这是一道“统计题”。 我们之前的题目多次提到,统计题的关键在于明确统计数据以及数据的存储。 这里要统计的数据是喝酒的次数,由于是两个数值, 用数值变量储存即可, 没有特别需要注意的地方。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1045 快速排序 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求所有给定数列中的满足主元条件的元素。 主元条件: 这个元素大于等于其左边所有元素 且 小于等于其右边所有元素; 所以题目可以描述为: 找出所有「大于等于其左边所有元素且小于等于其右边所有元素」的元素。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1044 火星数字 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求将给定的十进制数转为火星文, 以及将给定的转为十进制数。 所以核心需求是开发两个转化方法。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1043 输出PATest (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求按照以"PATest"的顺序, 对给定字符串进行重新输出, 输出的"PATest"各个字母的数量需要与原字符串中的数目相同. 忽略其他字符。 通过题设的描述我们可以知道这是一道统计题, 需要统计的是"PATest"各个字符在原字符串中的数目 然后输出时只要检查统计值是否大于0, 如果大于0则输出并将统计值-1即可。 统计题如何进行数据统计和存储之前的题目已经多次提及, 这里不再赘述。

#算法

「PAT乙级真题解析」Basic Level 1042 字符统计 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目中"出现最频繁"提示我们这是一道统计题+最值题。 统计数据是英文字母, 十分常规, 与之前我们提到的统计数据的题目一样存储数据然后查询数据即可。

#算法#c++#c语言

「PAT乙级真题解析」Basic Level 1041 考试座位号 (问题分析+完整步骤+伪代码描述+提交通过代码)

真正的题目是"有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。" 所以这套题就是关于数据查询的问题。如何存以及如何查是解决问题的核心。

#pat考试#c语言#需求分析

「PAT乙级真题解析」Basic Level 1040 有几个PAT (问题分析+完整步骤+伪代码描述+提交通过代码)

题目可以概括为: 找出符合指定条件的"P","A,"T"排列数目. 所以这道题目的关键在于给定的条件是什么以及如果将条件转为可以用步骤/逻辑/程序描述的形式.

#算法#c++#数据结构

「PAT乙级真题解析」Basic Level 1039 到底买不买 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定两个字符串, 要求计算出两个信息: 1. 第二个字符串的字符的种类以及出现的次数是否是被第一串覆盖。 2. 覆盖时: 两串字符串的长度差值 没有覆盖时: 没有覆盖的字符的次数差值总和 所以这道题依旧是一道统计题。我们需要统计两个字符串中出现的字符种类的次数, 然后对统计数据进行比较, 并输出所求结果.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1038 统计同成绩学生 (问题分析+完整步骤+伪代码描述+提交通过代码)

如题设所说,这道题目的核心需求是进行统计。 统计意味着考虑数据存储, 由于不是统计某个值(比如最值), 而是要统计之后用于一组给定分数的查询, 所以需要把所有统计数据存储下来.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1037 在霍格沃茨找零钱 (问题分析+完整步骤+伪代码描述+提交通过代码)

这道题中涉及的这种转换类似于"时:分:秒"的转化。 按照这个思路, 我们可以构造一个从"Galleon.Sickle.Knut"转为完全转为Knut值的方法, 同时构造一个从完全以Knut计算的数值转化为"Galleon.Sickle.Knut". 则题目可以转换为: 将给定的两个格式为"Galleon.Sickle.Knut"的值转为完全Knut值, 计算二者的差值, 然后将差值转回"Galleon.Sickle.Knut"的格式

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1036 跟Obama一起编程 (问题分析+完整步骤+伪代码描述+提交通过代码)

其实题目就是要你画一个正方形, 跟Obama没关系.

#算法#c语言#pat考试

「PAT乙级真题解析」Basic Level 1035 插入与归并 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两组数, 第二组数是第一组数用插入排序或归并排序进行排序的某个中间状态, 要求判断使用的是哪种排序, 并用这种排序算法对排序的中间状态再排序一次并输出. **从题设中我们识别到两个功能需求:** - 判断所使用的排序算法 - 使用对应排序算法再进行一次排序

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1034 有理数四则运算 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。 如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式. **所以本题的一个重点是如何将有理数转为题设要求的有理数.**

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1033 旧键盘打字 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目设定了一个场景: 有个键盘某些键坏了, 要你模拟这个键盘输入某段文本, 然后输出会被打印出来的内容。 **实质上, 这个题目是给定了一段文本, 然后给定了一个集合(键盘损坏的键集; 以及组合键规则, 如shift+t = T), 要求找出给定文本中不在集合中的内容, 并输出内容**。 **所以重点在于「查找当前字符是否在无法输出的字符集合中」的过程/逻辑.**

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1032 挖掘机技术哪家强 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定了一组数据, 要求输出某个指定的最大值,这是一道求最值的问题。 最值问题的基本思路是:遍历 + 记录并更新最值。 在这道题中, 我们要遍历的信息是参赛者信息, 包括所代表的学校编号和参赛成绩。 要求的最值是总得分最高的学校编号和总分。(这说明我们要记录并更新的数据是学校编号和对应总分)

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1031 查验身份证 (问题分析+完整步骤+伪代码描述+提交通过代码)

我们看到题目详细地描述了计算过程/操作步骤, 所以需要做的是将题目给定步骤翻译为代码即可。

#算法#c语言#pat考试

「PAT乙级真题解析」Basic Level 1030 完美数列 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定一个正整数数列, 要求找出从中尽可能多的数组成一个数列,使得新数列满足指定条件。 即, 新数列的最大值 小于等于 新数列的最小值 乘以 给定系数p. 由于数列和系数p是给定的, 变量是选取不同子数列后所对应的最大值和最小值。 所以这是一个找满足指定条件的一对数作为最大值和最小值的问题。

#算法#python#pat考试

「PAT乙级真题解析」Basic Level 1028 人口普查 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定一堆生日, 要求输出最年长和最年轻的人. 同时说明时间有不合理的数据, 需要排除掉超过200岁和未出生的生日. 今天的日期是2014年9月6日.

#算法#pat考试#数据结构

「PAT乙级真题解析」Basic Level 1026 程序运行时间 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定两个整数, 设定这两个数的差/CLK_TCK(此题中值为100)为程序时间运行的总秒数。 要求将花费的时间从总秒数转成"小时:分钟:秒数"的形式输出.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1029 旧键盘 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定两行文字, 第一行是应该输入的文字, 第二行是实际被输入的文字, 我们需要对比两行的文字, 找出应该被输入但是没有被输入的文字, 即两行文字相差的文字. 由于没有被输入是因为键盘坏掉, 所以如果两个文字在实际文本中出现, 但是它们之间的文字没有在文本中出现, 则它们之间的文字就是缺失的。

#算法#需求分析#数据结构

「PAT乙级真题解析」Basic Level 1024 科学计数法 (问题分析+完整步骤+伪代码描述+提交通过代码)

由于科学计数法表示形式中含有字符, 所以输入数据需要存储成字符串。 由于题设提示长度不会超过9999字节, 所以数值位数大概在1万位。所以为了避免数值溢出, 结果也要存储为字符串(或者直接输出) 我们需要把科学计数法转成普通数字表示法的步骤明确好, 然后用编程语言翻译即可。

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1023 组个最小数 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给的要求很明确, 给定若干数字, 要求输出排列组合组成的数中值最小的数。 只要知道如何组合出值最小的数, 就可以按照步骤组合出最小的数, 也就解决了问题。

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1022D进制的A+B (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定两个整数, 要求两数求和之后将结果转为指定进制的数. 这里需要我们明确的是"转为指定进制"如何进行?

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1021 个位数统计 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求统计的其实是: 统计给定整数各个数位上数字的出现次数。 这意味着: 我们需要获取这个数各个数位上的数字。

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1020 月饼 (问题分析+完整步骤+伪代码描述+提交通过代码)

给出月饼的库存量和总售价, 同时给出市场总需求量, 要求可能的最大收益. 问题转换: 优先通过售卖哪些种类的月饼来满足市场需求, 会得到最大收益?

#数据结构#算法#需求分析

「PAT乙级真题解析」Basic Level 1019 数字黑洞 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给出了具体的步骤, 但凡看到明确的步骤, 我们要做的就是将题目给的步骤描述清晰, 然后用编程语言描述即可。 题目给定一个4位正整数, 要求进行如下步骤:

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1018 锤子剪刀布 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目要求统计甲乙两人玩剪刀石头布游戏的游戏结果, 并输出要求的统计项. 由于"统计", "剪刀石头布"这些都是我们十分熟悉的用语, 不需要理厘清概念之类的. 只需要考虑清楚统计过程中涉及了哪些步骤即可使用编程语言进行翻译。...

#算法#数据结构#c语言

「PAT乙级真题解析」Basic Level 1017 A除以B (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给定一个大正整数A, 一个1位正整数B, 要求输出A除以B的商数Q和余数R. 从数学的角度, 商数Q和余数R可以直接由除法求得. 但显然这道题目有无法直接进行除法得到结果的因素: 整数过大, 用整型存储会导致数值溢出...

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1016 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目规定了一个概念: 正整数A的"DA部分", 给定四个正整数, A, DA, B, DB, 需要输出A的DA部分与B的DB部分的和. 这种给定具体规则/定义/概念的, 将对应规则用变成语言翻译成代码即可.

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1015 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给出了一批考生的德才分数, 要求根据"司马光的理论"给出录取排名. 于是, 我们需要明确一下什么是"司马光的理论"

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1014 (问题分析+完整步骤+伪代码描述+提交通过代码)

又是一道给出了明确规则/步骤的题目, 需要做的是明晰这些规则和步骤, 然后用编程语言进行描述。 题设给了四个字符串, 并说明了前两行需要一起使用, 后两行需要一起使用。

#算法#pat考试#需求分析

「PAT乙级真题解析」Basic Level 1013 (问题分析+完整步骤+伪代码描述+提交通过代码)

乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。

#c语言#算法#pat考试

「PAT乙级真题解析」Basic Level 1012 数字分类 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目给出了明确的处理内容: 1. 对一些系列正数进行分类 2. 按照要求计算出5个数 3. 输出5个数字 而根据所要求的5个数的定义, 每个数都是从除以5之后得到的余数相同的数中进行计算. 所以分类时, 需要按照除以5之后所得余数来分. 【这里有个坑,A1的要求里,不是除以5之后余0就可以归到A1组,而是余0且是偶数才可以归到A1组】

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1004 (问题分析+完整步骤+伪代码描述+提交通过代码)

[PAT练级笔记] 03 Basic Level 1004

#需求分析#pat考试#c语言

「PAT乙级真题解析」Basic Level 1002 (问题分析+完整步骤+伪代码描述+提交通过代码)

[PAT练级笔记] 02 Basic Level 1002

#算法#数据结构#需求分析

「PAT乙级真题解析」Basic Level 1011 (问题分析+完整步骤+伪代码描述+提交通过代码)

[PAT练级笔记] 09 Basic Level 1011

#pat考试#需求分析#c语言

「PAT乙级真题解析」Basic Level 1010 (问题分析+完整步骤+伪代码描述+提交通过代码)

[PAT练级笔记] 08 Basic Level 1010

#c语言#pat考试#算法

「PAT乙级真题解析」Basic Level 1009 (问题分析+完整步骤+伪代码描述+提交通过代码)

PTA 乙级 Basic Level 1009

#pat考试#算法#需求分析

「PAT乙级真题解析」Basic Level 1008 (问题分析+完整步骤+伪代码描述+提交通过代码)

PAT乙级BasicLevelPractice 1008题目给定了一个数组N和一个整数M, 要求: 1. 将数组每个元素向右移动M位 2. 不使用额外的数组这个要求很容易满足, 要求本身给出了操作内容, 第一直觉是模拟法搞定。由于这个要求的存在, 我们就需要重新考虑我们上面的方案. 考虑的目标是, 如果不使用额外的数组.(像极了一句废话) 换句话说, 我们要考虑"之前方案里的数组起到了什么作用", “是否有替代方式实现同样功能”我们在之前的练习题中提及过"数据的存储"是为了"使用存在的", 如果不需要使用,

#需求分析#c语言#pat考试

「PAT乙级真题解析」Basic Level 1007 (问题分析+完整步骤+伪代码描述+提交通过代码)

[PAT练级笔记] 05 Basic Level 1007

#需求分析#pat考试#c语言

「PAT乙级真题解析」Basic Level 1006 (问题分析+完整步骤+伪代码描述+提交通过代码)

[PAT练级笔记] 04 Basic Level 1006

#算法#数据结构#pat考试

「PAT乙级真题解析」Basic Level 1001 (问题分析+完整步骤+伪代码描述+提交通过代码)

题目中给出了关于卡拉兹猜想的计算步骤,并要求给出按照给定的步骤执行到满足终止条件(此处为n等于1)所需要的次数。 我们知道,程序是只能执行一些重复的工作,所以程序的逻辑归根结底是条件、循环和递归的组合,最终达到按照指定步骤完成任务的目的。而此类题目直接给出了具体的步骤,与程序的本质不谋而合。程序是用来重复执行人为设定行为的,也可以说是对人行为的模拟。而解答此类题目就是直接将题设给出的步骤用编程语言语法翻译成代码逻辑,所以这种解法可以说是"模拟法"。

#算法#pat考试#c语言

[算法基础] 二分查找

二分查找的原理 二分查找所应用的对象要求是有序的。 比如对一个按升序排好的数组,在其中查找给定值的元素。 查找时每次取正中位置mid = ( low + (high-low) / 2 ), 如果该元素即为所找元素,则查找结束; 如果该元素比所找元素大,则说明该元素右边的元素也必然比所找元素大,所以该元素右边的元素即数组右半部分可以舍去,此时令high = mid - 1。重置查找区间,进行下一趟查...

#算法#二分查找#