刷题
文章平均质量分 87
记录一些比较有意思的题目
别团等shy哥发育
硕士在读,对分布式、中间件、容器、微服务、深度学习、机器学习与数据挖掘方面感兴趣,希望可以在这些方面和大家交流学习方法。
后续文章会搬到这里:www.codeleader.top
展开
-
迷宫-BFS
由于传送门的存在, 从 (1,1) 出发到终点 (2,2) 只需要一步;, 那么小明既可以花费1的步数向上下左右四个方向之一走一格 (不能越过边界), 也可以花费1的步数通过传送门走到格子去。迷宫中除了可以向上下左右四个方向移动一格以外, 还有m个双向传送门可以使用, 传送门可以连接两个任意格子。n个格子中均匀随机的 (当然运气好可以直接随机到终点), 他想知道从初始格子走到终点的最短步数的期望值是多少。以终点为起点跑遍整个地图,每次到一个新的位置时,此时到达的步数就是从终点到该点的最短步数(原创 2023-06-01 21:39:56 · 1264 阅读 · 0 评论 -
出差(Bellman-Ford算法)
从题意可知,这道题目考察的是最短路径的算法,碰到这种问题最容易想到的就是Floyd算法,三个for循环就写出来了,但是由于Floyd的时间复杂度是。由于存在隔离时间,所以我们每条边的权值需要有所调整,假设城市A到城市B有一条权值为w的双向边,那么我们从城市A到城市B的权值需要修改为。由于上级要求, 小明希望能够尽快赶到城市 N, 因此他求助于你, 希望你 能帮他规划一条路线, 能够在最短时间内到达城市。算法是对边进行枚举,所以我们只需要在初始化的时候设置好边的权值即可,另外不需要考虑起点和终点的隔离时间。原创 2023-05-31 22:55:25 · 1365 阅读 · 0 评论 -
第十届蓝桥杯研究生组国赛-大胖子走迷宫(BFS问题)
小明在时刻 0 出发,每单位时间可以向当前位置的上、下、左、右移动单 位 1 的距离,也可以停留在原地不动。小明走迷宫走得很辛苦,如果他在迷宫里面待的时间很长,则由于消耗了很多脂肪,他会在时刻。n个方阵组成的方阵,正常人每次占用方阵中1×1的区域,而小明要占用 5×5的区域。走迷宫是计划中的重要环节。:先将初始点放入队列,然后只要队列非空我们就让队头节点出队,判断是否已经到达了终点,如果是,输出花费的时间。小明是个大胖子,或者说是个大大胖子,如果说正常人占用1×1 的面积,小明要占用 5×5 的面积。原创 2023-05-08 21:43:55 · 1655 阅读 · 2 评论 -
路径之谜(DFS)-2016年蓝桥杯国赛
骑士从左上角起点出发,没走一步,往左边和上边对应位置射一箭,题目在方格的左边和上边给出了骑士从起点到终点射箭的数量,现在让我们求骑士行走的路线。但不必走完所有的方格。如果走到终点且箭靶上的箭还没有被拔完,那我们就要济宁回溯操作(标记当前点未访问,左边箭靶数量+1,上边箭靶数量+1)。数组中记录的是经过的每个方格的编号,最后将这些编号输出即为骑士从起点到终点走过的路径。如果该点是终点,且箭靶上箭的数量为0,则说明走过的路线就是骑士经过的路线,算法结束。个整数,空格分开,表示北边的箭靶上的数字(自西向东)原创 2023-05-05 21:01:11 · 1595 阅读 · 0 评论 -
十一届蓝桥杯研究生组国赛-循环小数(数论)
例如 0.3333⋯0.3333⋯ 等于 1331 ,0.1666⋯0.1666⋯ 等于 1661。其实纯循环小数和混合循环小数最后的推导结果是可以合并的,这里为了区分就不合并了,看起来思路还清晰一点。,循环体为142857,该循环体有6位,有。再计算出142857与999999的最大公约数位142857,则对分数。输出两个整数,用一个空格分隔,分别表示答案的分子和分母。此时p=1,q=6,循环体位142857。是一个小于 11 的循环小数,请计算与。相等的最简真分数是多少。此时,p=3,q=7。原创 2023-05-05 10:12:03 · 1163 阅读 · 0 评论 -
十三届蓝桥杯研究生组国赛-最大公约数(线段树+二分)
由于要求的是最少次数,所以在没有1的情况下,我们要使用最少的操作次数获得1,其实就是我们在数组中找到最短的子数组,使得它们的gcd结果为1,涉及到了查询区间gcd整个操作。我们首先应该考虑数组中是否存在1,如果数组中存在1,那直接让整个1和其他数字都进行gcd,假设1的个数为。因为如果存在一个数组的gcd为1,那么整个数组无论再加上任何正整数,gcd也永远是1,因为。,如果整个数组的gcd都不为1,那么任何子数组的gcd也不可能为1,此时无解。,对于数组中的每个数我们都可以固定为区间的左端点。原创 2023-04-29 17:27:15 · 1471 阅读 · 1 评论 -
线段树入门
基于arr数组构建线段树,我们根节点存储的是区间[0-5]的和,再往下面分叉,左边表示[0-2]的和,右边表示[3-5]的和,以此类推,最后所有的叶子节点就是数组中的所有数字。线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。我们判断要修改的点是位于线段树的左子树还是右子树,若是左子树,递归左子树,修改对应节点的值,若是右子树那就递归右子树,修改对应节点的值。:我们使用一个数组保存,先标记上各个节点的下标,根节点下标为0,根节点的左孩子下表为。原创 2023-04-29 00:06:24 · 1693 阅读 · 0 评论 -
十三届蓝桥杯研究生组国赛-斐波那契数组
这里我们还需要确定斐波那契梳理的初始值,因为题目中并没有说初始值就是1,这个我们可以通过遍历的方式求解,我们将初始值从1取到1000000,然后根据这个初始值生成斐波那契数列,, 你可以执行任意次修改, 每次修改将数组中的某 个位置的元素修改为一个大于 0 的整数。将原数组修改为 (1,1,2,3,5)(1,1,2,3,5), 最少修改三个元素变成了一个斐波那契数组。然后我们比较控制台输入的数组和我们生成的正确斐波那契数组匹配的个数,取匹配个数最大的那一个即可。会变成一个斐波那契数组。原创 2023-04-28 16:10:56 · 2289 阅读 · 0 评论 -
Bellman-Ford算法--解决负权边问题
前阵子备考蓝桥杯的时候碰到了这个算法,感觉还挺有意思的,实现起来也非常简单。贝尔曼-福特算法(Bellman-Ford)是由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特 创立的,求解单源最短路径问题的一种算法。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所有可能的最短路径。其优于迪科斯彻算法。原创 2023-04-14 23:00:27 · 1775 阅读 · 1 评论 -
RSA解密-第十届Java研究生组E题
互质(互质的意思是最大公约数是1),这里我用暴力遍历出p和q,由于是填空题,n的数字很大,这个遍历求p和q花费了几秒钟的时间。=212353,同时你截获了别人发送的密文 C=20190324,请问,原文是多少?),Java中的BigInteger类型提供了求乘法逆元的API,我们直接调用就行。然后根据p和q的值求e,这个直接调用惩罚逆元的API即可。现在C、e、n都是已知的,我们直接利用公式。求解出原文,但是想求出e就得先求出p和q。组成了私钥,n,d 组成了公钥。=3 时,n=55,e=27。原创 2023-04-01 21:23:13 · 1049 阅读 · 0 评论 -
蓝桥杯-修改数组(并查集)
然后执行5和(5+1=6)的合并就行,到这里已经结束了,就不再画出5和6的合并结果了。没输入一个数字,我们就去查找它的根节点,把他根节点的值当作这个位置的最终结果。如果新的A_i仍在之前出现过,小明会持续给 加。也经过上述修改之后,显然A数组中就没有重复的整数了。的时候,直接把2的根节点值3当作本次的最终结果。,然后执行3和(3+1=4)的合并,结果如下右图。为例,初始的时候,我们让每个节点都指向自己。这样做的目的是,在下一次还输入。,数组中有可能有重复出现的整数。数组保存每个节点的父节点,使用。原创 2023-03-31 21:55:16 · 962 阅读 · 0 评论 -
十三届蓝桥杯研究生组J题-推导部分和(带权并查集)
对于本题来说,我们需要将区间的左端点从0开始,在计算部分和的时候我们不包括左端点的值,如果求1到2位置上的部分和时,若并查集结构为(1->2),此时1到2之间就只能有一个权值,即只能指导1或者2位置上的值,所以并查集的结构应改为(0->1->2)。查找节点x的根节点的时候,压缩x节点到根节点的路径,这样我们下一次查找x的根节点时候,至于要一步操作就能;的部分和,现在要将节点1所在的连通图与节点3所在的连通图合并,现在给出。的边权值表示的是2位置上的值,此时求1到2位置上的部分和时,即。原创 2023-03-31 18:58:02 · 831 阅读 · 0 评论 -
蓝桥杯-全球变暖(BFS/DFS)
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。还有,如果初始的时候,一个陆地的周围都是海洋,这个陆地也是可以构成岛屿的,这个很关键,刚开始不知道这个,走了很多弯路,不过这个条件感觉有点歧义。统计不会被淹没的岛屿个数,每次搜索的时候,判断上下左右是不是都是陆地,若是,则这个岛屿不会被淹没,最后我们用岛屿总数-不会被淹没的岛屿个数即可。这里注意一下,被海洋覆盖之后,不会被淹淹没的岛屿数量可能会增加。记录该岛屿是否会被淹没,如果不会被淹没,设置。最后会被淹没的岛屿数量。原创 2023-03-30 23:36:42 · 647 阅读 · 0 评论 -
蓝桥杯-卡片换位(BFS)
我们首先获取开始时候A、B和空格的位置,我们从空格所在的位置开始向四个方向扩展,这里由于给定了2行3列共6个位置,其实扩展的次数也不是特别多,不过每次扩展的时候都需要判断扩展节点是否越界。每扩展到一个位置,我们需要将当前的空格节点与扩展节点所在位置上的数据进行互换,然后我们标记当前的地图,这里我用一个Node类存储当前的地图:包括当前空格所在位置。这里我们将两行拼接在一起,当作一个字符串就行,至于怎样从现在的字符串还原出原来二维数组的坐标,那也很简单,假设当前的空格位置为。这是个类似的,但更简单的游戏。原创 2023-03-29 23:33:31 · 774 阅读 · 0 评论 -
蓝桥杯-密码脱落(动态规划问题)
原因估计是你从左边补上和从右边补上可能对后面的结果也是有影响的,现在暂时还不清楚,不想看这个那就直接用下面的动态规划做吧。题目中问的是脱落了几个种子,也就是说从原来的回文串到现在剩下的串是少了几个字符变过来的。我们只需要在现在的字符串中找到最长回文子串,剩下的字符个数就等于已经脱落的字符个数,那么我们怎么求当前字符串的最大回文子串呢?你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。快1点了,有点困了,上面的思路可能在细节方面有点欠缺,以后补上吧。原创 2023-03-29 00:49:27 · 940 阅读 · 0 评论 -
蓝桥杯-统计子矩阵(前缀和+双指针)
由于数组没有辅助,在R指针右移的过程中,L也一定会右移(否则求和会超出k的范围),这样我们将问题转化成了一个一维数组的子数组和。知道了上面这些基础知识,我们很容易的想到我们只需要枚举矩阵的左上角坐标和右下角的两个坐标就能计算出子矩阵的和了。上面的代码中前两重循环确定左上角坐标,后两重循环确定右下角坐标,然后用我们计算前缀和的公式去算就行。,如果求和结果大于K,那么L指针右移,统计当前R作为右边界的符合条件的数量为。看到这个矩阵求和的题目,我们要马上想到二维数组的前缀和。原创 2023-03-29 00:19:14 · 1503 阅读 · 0 评论 -
Dijkstra-单源最短路径算法
Dijkstra算法用来计算一个点到其他所有点的最短路径的算法,是一种单源最短路径算法。也就是说,只能计算起点只有一个的情况。算法的时间复杂度是On3O(n^3)On3,它不能处理存在负边权的情况。算法描述:设起点为s,dis[v]表示从s到v的最短路径长度disv∞v≠s;i原创 2023-03-14 20:52:35 · 1659 阅读 · 0 评论 -
蓝桥杯-本质上升序列(动态规划问题)
在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到。对于一个字符串,小蓝想知道,本质不同的递增子序列有多少个?的递增序列是重复的,我们应当减去这一部分,下面会给个实例。,本质不同的递增子序列有 21 个。结尾的本质不同递增子序列的个数,我们考虑。本质不同的递增子序列有多少个?结尾的递增子序列个数,又因为。,这是倒序,不满足条件。原创 2023-03-23 17:28:35 · 689 阅读 · 0 评论 -
跳跃-动态规划问题
例如,如果当前小蓝在第 3 行第 5 列,他下一步可以走到第 3 行第 6 列、第 3 行第 7 列、第 3 行第 8 列、第 4 行第 5 列、第 4 行第 6 列、第 4 行第 7 列、第 5 行第 5 列、第 55 行第 6 列、第 6 行第 5 列之一。在图中,有的位置有奖励,走上去即可获得,有的位置有惩罚,走上去就要接受惩罚。那我们可以由此建立一个搜索的坐标数组,每次从当前位置搜的时候我们就扩展坐标即可。开始时,小蓝站在方格图的左上角,即第 11 行第 11 列。输出一个整数,表示最大权值和。原创 2023-03-21 23:03:17 · 775 阅读 · 0 评论 -
重新排序-研究生组G题
我们的目的是计算出每个位置上的查询次数,也就是被加的次数,最后我们尽可能让数值比较大的数字被查询的次数最多就能满足最后的和最大。贪心思想:我们的目的是查询之和最大,那么我们直接将原数组a和前缀和数组s都进行排序,然后对应位置相乘求和,这样就保证了较大的数字被查询的次数多一点,和也就最大了。题目想要重新排列之后的数组,使得每个查询结果尽可能大,最终的结果为重新排列之后的最大和减去重新排列之前的最大和。原来的和为6+14=20, 重新排列为(1,4,5,2,3) 后和为10+14=24, 增 加了4。原创 2023-03-21 18:02:09 · 339 阅读 · 0 评论 -
蓝桥杯-染色时间(优先级队列)
实现,我们依次将染色的点加入队列中,每次取出染色耗时最短的点,然后依次将其上下左右四个位置的节点入队,节点的值加上出队的这个节点的染色时间,之后将上下左右这。后面的节点入队和出队类似,这样我们使用优先级队列,每次耗时最短的节点先出队,最后出队的节点就是耗时最久的,他的时间就是最终的输出结果。给定每个方格的染色时间, 在时刻 0 触发第一行第一列的方格染色, 请问 多长时间后整个棋盘完成染色。所以,我们其实每次都取得是染色时间最小的,然后再更新它周围没有被染色的节点的染色时间。, 分别表示棋盘的行数和列数。原创 2023-03-19 12:17:32 · 472 阅读 · 0 评论 -
简单0-1背包问题求解
这里f(0,w)表示不拿物品,价值肯定为0,f(k,0)表示被包装量为0,肯定装不下,所以第一行和第一列都是0,这里算几个关键的。我们有4件物品,背包容量为8,我们的目标是求在背包容量为8的前提下能装物品的最大价值。小明想知道再购买的物品总体积不超过V的情况下所能获得的最大价值为多少,请你帮他算算。输入第1行包含两个正整数N,V,表示商场物品的数量和小明的背包容量。,因为没拿第4件,所以背包容量没变,也不用再加第4件物品的价值。为:当背包容量为w,现在有k件物品可以偷,所能偷到的最大价值。原创 2023-03-15 00:04:08 · 539 阅读 · 0 评论 -
Floyd算法求解最短路径
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德。核心思路:通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。算法过程:从任意一条单边路径开始。左右两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。对于每一对顶点u和v,看是否存在一个顶点w使得从u到w再到v比已知的路径更短,如果更短,则更新它。上述概念来源于百度百科。原创 2023-03-13 21:49:48 · 12129 阅读 · 13 评论 -
DFS深度优先搜索解决迷宫问题
上一篇博客讲解了BFS广度优先搜索求解迷宫问题,今天试试DFS深度优先搜索。原创 2023-03-13 13:37:11 · 1018 阅读 · 0 评论 -
BFS广度优先搜索解决迷宫问题
然后不断地从队列中取出队首节点,然后再扩展它的邻居节点,再将它的邻居节点入队列(需要做一些条件判断)。我们的基本思想是按照BFS的基本操作,将迷宫看成一个无向图,每一个格子为一个节点,如果两个格子相邻且都是道路,则这两个格子之间有一条边。我们每从队列中取出一个节点的时候,将它的所有扩展结点(不包括墙和被访问过的)加入队列,同时更新这些扩展节点的。G的每个格子要么是道路,要么是障碍物(道路用1表示,障碍物用2表示)。迷宫示意图如下所示:图中start为起点,end为终点,方格中的2为障碍物。原创 2023-03-12 22:39:31 · 809 阅读 · 0 评论 -
并查集(Union-find Sets)
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。蓝桥幼儿园的学生是如此的天真无邪,以至于对他们来说,朋友的朋友就是朋友。我们对两个节点执行合并操作,输入为i和j,我们先找到i的祖先,再找到j的祖先,然后让i的祖先指向j的祖先(i和j的顺序换下也可以)。的祖先直接返回,这里有两种,一种是未进行路径压缩的版本,这种容易超时,我们一般使用的都是经过路径压缩的代码。此概念来源于百度百科。原创 2023-03-12 16:38:56 · 566 阅读 · 0 评论 -
蓝桥杯-左移右移(2022国赛)
双向链表插入和删除元素比较快,但是我们的事件主要花费在了查找x这个值上面,这个方法只能通过50%的测试用例。遍历结束之后,我们只需要将map中的值按照value排序,然后输出排序之后的。,我们就找到这个x,将该节点移动到链表的头部,可以直接将该节点删除,然后使用。我们使用双向链表结构来存储这N个元素,若输入的是。的数组, 初始时从左到右依次是 1,2,3,…输入测试用例,顺便打印下移动结束之后的map。,开始左移的时候,我们的key不动,将。,开始右移动的时候,我们同样将。个数, 代表操作后的数组。原创 2023-03-08 21:56:46 · 1426 阅读 · 1 评论 -
蓝桥杯-最优清零方案(研究生组I题)
题中给了两个操作,操作1是一次只能减1,操作2可以将连续K个数字同时减1,所以我们的目标其实是看能执行多少次操作2,操作2执行完之后,数组中将会剩下不连续的数字,这些数字只能执行操作1,所以我们直接将剩下这些数字相加即可。的整数区间了,接下来数组中的所有操作都只能执行操作1,一个个减太慢,直接对当前数组中的所有元素求和,即。循环来控制滑动窗口,每次开始的时候找到k个连续区间内最小的值。位置处的数字已经为零了,我们直接将下一次窗口的左指针移动到。个大于 0 的整数, 将它们各减去 1。原创 2023-03-07 22:30:47 · 1176 阅读 · 1 评论 -
蓝桥杯-李白打酒加强版
虽然做出来了,但这个只能通过40%的用例,剩下的60%超时了。注意: 显里没酒 ( 0 斗) 时遇店是合法的, 加倍后还是没酒;一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。,用a表示李白遇见的是店,b表示遇见的是花,c表示酒显中的剩余酒量。请你计算李白这一路遇到店和花的顺序, 有多少种不同的可能?逢店加一倍, 遇花喝一斗。已知最后一次遇到的是花, 他正好把酒喝光了。,店没了,题中要求最后一次遇见的是花,所以。,因为遇见花要喝一斗酒,所以。,店-1,酒量加倍。,花-1,酒量-1。原创 2023-03-05 18:23:57 · 1278 阅读 · 1 评论 -
蓝桥杯-刷题统计
第一种方案(这种会超时):周一到周五每天做a道题,周六周天每天b道题,直接累加就行,周内就+a,周末就+b,最后输出总数就行。这道题不难,就是暴力解法直接就超时了,只能通过60%,也就是说考试的时候只能拿60%的分,第二种直接满分。道题目还剩下多少天,这个时候天数只能是1-6了,写个循环判断下就行,假设做完剩下这些题需要。我们直接看n道题目需要做多少周,由题意知,每周可以做的题目数量为。经过测试,第一种只有60%的用例可以通过,后面都超时了。周刚好可以把所有题目做完,直接输出。,计算n道题目可以做。原创 2023-03-05 18:14:38 · 1406 阅读 · 0 评论 -
蓝桥杯-质因数个数
判断一个数字是否是质数,就是看它的因子是否只有1和它本身。质数的判断我们简单写个函数判断就行,代码如下,遍历的时候不需要从2到n,只需要遍历到n的平方根即可。上面两步已经完成了求取因子和判断质数的函数,我们只需要遍历因子集合,判断每个因子是否是质数即可,用一个计数器变量。质数又被称为素数,是指一个大于1的自然数,除了1和它本身外,不能被其他的自然数整除。396 有 2,3,11 三个质数约数。2、3、11是396的三个质因数。对于 30% 的评测用例, 1≤。对于 60% 的评测用例,1≤。原创 2023-03-04 12:03:16 · 812 阅读 · 4 评论 -
蓝桥杯-考勤刷卡
其中 HH:MM: SS 表示刷卡时间, HH 为一个 0 到 23 之间的两位十进制整数 (可能含前导 0 ) 表示时, MM 为一个 0 到 59 之间的两位十进制整数 (可能含前 导 0) 表示分, SS 为一个 0 到 59 之间的两位十进制整数 (可能含前导 0 ) 表 示秒, ID 为一个不含前导 0 的整数表示员工的编号。按照这个题意,似乎和打卡时间没什么关系啊,只是让咱把打卡数据按照员工编号的大小输出而已(只输出员工编号),但是一个用工可能同时打了多次卡,所以有个去重问题。原创 2023-03-03 22:58:03 · 420 阅读 · 0 评论 -
蓝桥杯-超级质数
类型转成String类型,然后对该字符串的每个字符进行遍历(只有质数才会进行遍历,否则直接跳过),这里需要遍历字符串的时候需要两层for循环,因为我们需要不断去截取字符串,并判断截取的字符串是否是质数,若每次截取下来的都是质数,则说明该数是超级质数,然后用一个临时变量保存下就行。的每位数字都是质数, 而且每两个相邻的数字组成的两位 数是质数, 而且每三位相邻的数字组成的三位数是质数, 依次类推, 如果每相邻的。,则需要将他的值和max比较,保留最大的超级质数,若。,如果当前数字不是质数,直接结束本次循环。原创 2023-03-03 22:47:31 · 432 阅读 · 0 评论 -
蓝桥杯-数位排序
注意:如果最后用List收集结果,那我们收集的是Map中排好序之后的key,此时的value对我们已经没用了,所以不要也行,直接用List比较方便,这里用LinkedHashMap去收集也是可以的。1 到 13 的排序为: 1,10,2,11,3,12,4,13,5,6,7,8,91,10,2,11,3,12,4,13,5,6,7,8,9。我们可以用Map的key存真实的数字,用value存每个数字的位数之和,最后再根据Map的value进行排序返回一个新的Map或者List就行。第二行包含一个正整数。原创 2023-03-02 23:56:17 · 368 阅读 · 0 评论 -
蓝桥杯-货物摆放
例如,当 n=4 时,有以下 66 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1、1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。小蓝有一个超大的仓库,可以摆放很多货物。,找到这些因子之后,由于是。原创 2023-03-02 23:56:06 · 351 阅读 · 0 评论 -
蓝桥杯-求和问题
我们直接两个for循环就可以解决,每次遍历到某个数的额时候,让它与自己后面的所有数字相乘并求和即可。这里sum必须用long类型,要不会超出int范围。请使用合适的数据类型进行运算。对于 30% 的数据,1≤n≤1000,1≤。对于所有测评用例,1≤n≤200000,1≤。这种会超时,看下面这种优化后的。输入的第一行包含一个整数。原创 2023-03-02 03:00:00 · 240 阅读 · 0 评论 -
LeetCode171-Excel表列序号(进制转换问题)
这个我们可以仿照十进制中的进制转换方法,通常我们在从高位向低位处理的时候,起始设置nums=0,然后每次使用当前位的数值更新nums,更新的公式为。本题只需要将10进位换成26即可(A-Z有26个字母),即更新公式为。,表示Excel表格中得列名称。返回该列名称对应得列序号。由于本题没有0,所以代码中在减去’A’之后要+1.,这个v就是当前位的数字。原创 2023-02-19 21:32:38 · 436 阅读 · 0 评论 -
leetcode144-二叉树的前序遍历
按照定义,我们只要首先将 root 节点的值加入答案,然后递归调用 preorder(root.left) 来遍历 root 节点的左子树,最后递归调用 preorder(root.right) 来遍历 root 节点的右子树即可,递归终止的条件为碰到空节点。首先我们需要了解什么是二叉树的前序遍历:按照访问根节点——左子树——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。原创 2022-12-12 18:43:18 · 493 阅读 · 3 评论 -
leetcode112-路径总和
不难发现这满足递归的性质,若当前节点就是叶子节点,那么我们直接判断 sum 是否等于 val 即可(因为路径和已经确定,就是当前节点的值,我们只需要判断该路径和是否满足条件)。,我们可以将这个大问题转化为一个小问题:是否存在从当前节点的子节点到叶子的路径,满足其路径和为。首先我们可以想到使用广度优先搜索的方式,记录从根节点到当前节点的路径和,以防止重复计算。这样我们使用两个队列,分别存储将要遍历的节点,以及根节点到这些节点的路径和即可。假定从根节点到当前节点的值之和为。是指没有子节点的节点。原创 2022-12-11 11:54:03 · 376 阅读 · 0 评论 -
leetcode:合并两个有序数组
数组已经排好序了,那我们就每次从两个数组头部取出两个数字,然后比较,将数值较小的那个加入到结果中就行,然后谁被加入到结果中,那么那个数组的工作指针后移,没加入的不动就行。当其中一个数组空的时候(两个数组长度可能不一致),把剩下那个数组直接全部加入到结果数组中即可。:最终,合并后数组不应由函数返回,而是存储在数组。个元素表示应合并的元素,后。中,使合并后的数组同样按。原创 2022-12-11 11:51:49 · 867 阅读 · 0 评论