![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
文章平均质量分 70
算法,搜索专题
来老铁干了这碗代码
算法爱好者 终生学习践行者 雨雪刀霜阻不住 不成大神誓不休
展开
-
【解题报告】Leecode 559. N 叉树的最大深度——Leecode每日一题
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/submissions/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。原创 2021-11-21 20:53:08 · 165 阅读 · 0 评论 -
解题报告-Leecode 563. 二叉树的坡度——Leecode每日一题系列
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0原创 2021-11-18 20:48:05 · 186 阅读 · 0 评论 -
【解题报告】Leecode 2059. 转化数字的最小运算数
题目链接——>https://leetcode-cn.com/problems/minimum-operations-to-convert-number/题解汇总——>题目描述给你一个下标从 0 开始的整数数组 nums ,该数组由 互不相同 的数字组成。另给你两个整数 start 和 goal 。整数 x 的值最开始设为 start ,你打算执行一些运算使 x 转化为 goal 。你可以对数字 x 重复执行下述运算:如果 0 <= x <= 1000 ,那么,对原创 2021-10-31 22:52:33 · 1729 阅读 · 0 评论 -
Leecode 869. 重新排序得到 2 的幂——Leecode每日一题系列
题目链接:https://leetcode-cn.com/problems/reordered-power-of-2/题目给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。示例 1:输入:1输出:true示例 2:输入:10输出:false示例 3:输入:16输出:true示例 4:输入:24输出:false示例 5:输入:46输出:true原创 2021-10-28 22:30:00 · 195 阅读 · 0 评论 -
Leecode 301. 删除无效的括号——Leecode每日一题系列
题目描述给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。示例 1:输入:s = “()())()”输出:["(())()","()()()"]示例 2:输入:s = “(a)())()”输出:["(a())()","(a)()()"]示例 3:输入:s = “)(”输出:[""]提示:1 <= s.length <= 25s 由小写英文字母以及括号 ‘(’ 和原创 2021-10-27 21:15:00 · 198 阅读 · 0 评论 -
Leecode22. 括号生成——Leecode大厂热题100道系列
我是小张同学,立志用最简洁的代码做最高效的表达以下是我个人做的题解,每个题都尽量囊括了所有解法,并做到了最优解,欢迎大家收藏!留言!传送门——>Leecode大厂热题100道系列题解问题描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:原创 2021-10-08 23:30:00 · 170 阅读 · 0 评论 -
Leecode17. 电话号码的字母组合——Leecode大厂热题100道系列
我是小张同学,立志用最简洁的代码做最高效的表达以下是我个人做的题解,每个题都尽量囊括了所有解法,并做到了最优解,欢迎大家收藏!留言!传送门——>Leecode大厂热题100道系列题解问题描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce原创 2021-09-30 22:45:00 · 186 阅读 · 0 评论 -
【击败时间100%】剑指 Offer 38. 字符串的排列
立志用最少的代码做最高效的表达输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]限制:1 <= s 的长度 <= 8核心思路:采用交换元素的方式进行递归,从而实现全排列。优化:尽可能的将参数设置为成员变量(可以理解为全局变量),而不是放在dfs的参数中传递,后者会使效率降低。class Soluti原创 2021-06-19 00:27:17 · 313 阅读 · 0 评论 -
【解析】UVA-548 Tree
立志用最少的代码做最高效的表达You are to determine the value of the leaf node in a given binary tree that is the terminal node of a path of least value from the root of the binary tree to any leaf. The value of a path is the sum of values of nodes along that path.I原创 2021-04-01 23:33:30 · 305 阅读 · 0 评论 -
1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people‘s pho
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门One way that the police finds the head of a gang is to check people’s phone calls. If there is a phone call between A and B, we say that A and B is related. The weight of a relation is defined to be the total time leng原创 2021-02-19 16:29:42 · 443 阅读 · 0 评论 -
【讲解】1030 Travel Plan (30 分)【DFS】_41行代码Ac
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门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 sta原创 2021-02-18 18:30:01 · 340 阅读 · 0 评论 -
【解析】1013 Battle Over Cities (25 分)_31行代码AC
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately if we need to repair any ot原创 2021-02-10 00:02:30 · 1541 阅读 · 0 评论 -
【两种解法】1004 Counting Leaves (30 分)_27行代码AC
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.Input Specification:Each input file contains one test case. Each case starts with a line conta原创 2021-02-06 19:51:00 · 1560 阅读 · 0 评论 -
1003 Emergency (25 分)【Dijastra与DFS解法】
立志用最少的代码做最高效的表达As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of原创 2021-02-06 00:17:27 · 1559 阅读 · 0 评论 -
【刘汝佳可运行代码】Ordering Tasks UVA - 10305【两种解法】
立志用最少的代码做最高效的表达John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task is only possible if other tasks have already been executed.InputThe input will consist of several instances of the problem. Each instan原创 2021-02-04 21:43:38 · 1573 阅读 · 2 评论 -
【两种解法】Quadtrees UVA - 297(隐式建树+显式建树)
立志用最少的代码做最高效的表达A quadtree is a representation format used to encode images. The fundamental idea behind the quadtree is that any image can be split into four quadrants. Each quadrant may again be split in four sub quadrants, etc. In the quadtree, the im原创 2021-02-02 18:56:58 · 981 阅读 · 0 评论 -
【两种解法】he Falling Leaves UVA - 699
立志用最少的代码做最高效的表达Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating under the trees. If the same thing happened to binary trees, how large woul原创 2021-02-02 19:01:00 · 1328 阅读 · 0 评论 -
【三种解法】Not so Mobile UVA - 839_19行代码AC
立志用最少的代码做最高效的表达Before being an ubiquous communications gadget, a mobile was just a structure made of strings and wires suspending colourfull things. This kind of mobile is usually found hanging over cradles of small babies.The figure illustrates a simp原创 2021-02-01 15:59:28 · 763 阅读 · 0 评论 -
Thrall’s Dream HRBUST - 2048【BFS or 强连通分量】
立志用最少的代码做最高效的表达We never paid any heed to the ancient prophecies, like fools we clung to the old hatreds, and fought as we had for generations. Until one day the sky rained fire, and a new enemy came upon us. We stand now upon the brink of destruction, f原创 2021-01-29 20:18:40 · 709 阅读 · 0 评论 -
有一批共n个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为wi,且 装载问题要求确定,是否有一个合理的装载方案可将这n
一、问题描述有一批共n个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为wi,且 ∑i=1nwi≤c1+c2\sum _{i=1}^{n} wi\leq c1+c2∑i=1nwi≤c1+c2装载问题要求确定,是否有一个合理的装载方案可将这n个集装箱装上这2艘轮船。如果有,找出一种装载方案。分析:(1)首先将第一艘轮船尽最大可能装满;(2)然后将剩余的集装箱装上第二艘轮船。***#### 代码//最优装载问题,时间复杂度为O(2^n)#include<iostr原创 2020-12-21 15:36:06 · 11195 阅读 · 1 评论 -
重写0-1背包问题的回溯法,使算法能输出最优解
重写0-1背包问题的回溯法,使算法能输出最优解样例:4 73 95 102 71 4输出:20分析:构建二叉树,每个物品只有拿和不拿两种情况, 时间复杂度为O(2^n)。不难, 深搜模板, 笔者写了两种代码, 第一种可以输出搜索路径, 第二种是简化版的,只能输出最大值。代码一(搜索路径)#include<bits/stdc++.h>#define MAXLENGTH 10 using namespace std;int c, n, weight[MAXL原创 2020-12-21 15:31:42 · 3095 阅读 · 0 评论 -
我们讨论的是《战争之城》的一个简单版本。如果地图上只有空旷的空间,河流,钢墙和砖墙。你的任务是尽快得到奖金,假设没有敌人会打扰你(见下图) 你的坦克不能穿过河流和墙壁,但它可以通过射击摧毁砖墙。当你击
我们讨论的是《战争之城》的一个简单版本。如果地图上只有空旷的空间,河流,钢墙和砖墙。你的任务是尽快得到奖金,假设没有敌人会打扰你(见下图)你的坦克不能穿过河流和墙壁,但它可以通过射击摧毁砖墙。当你击中砖墙时,砖墙会变成空地,但是,如果你的子弹击中了钢墙,就不会对墙造成损伤。在每一个转弯中,你可以选择移动到一个相邻的(4个方向,而不是8个)空旷的地方,或者不移动地朝四个方向中的一个射击。射击会朝那个方向进行,直到它超出地图范围或者撞到墙上。如果子弹击中了一堵砖墙,这堵墙就会消失(也就是说,在这个回合中)。原创 2020-12-05 19:42:10 · 1054 阅读 · 0 评论 -
38行代码AC——UVA-167The Sultan‘s Successors(八皇后问题,附视频讲解)
最近备考蓝桥,学习到递归模块,从最基本的八皇后及其变种开始刷起(如果可以穿越,我一定要抓到发明递归的那个人,然后把他干掉,造福后世的算法er,555555)。题目大意一个人,没孩子,要在死前分割财产,然后出了一个题,让人们做,也就是八皇后,8 * 8 的棋盘,棋盘有64个值,不同的放置方案有不同的和,求最大的和就可得出答案。心路历程读懂题意后很容易看出来这是一道八皇后的变种题,因此做此题前一定要理解且背写出八皇后代码。这里附上n皇后原理的视频讲解——>传送门很快的敲出了八皇后的原码,与八原创 2020-08-18 17:40:09 · 689 阅读 · 0 评论 -
解题报告——蓝桥杯 试题 基础练习 2n皇后问题(附n皇后代码)
心路历程:之前并没有系统的学过递归和搜索,在学这道题前先学习了深搜、递归,并敲掉了经典N皇后,因此理解起来难度也不是很大。 没有基础的同学一定要先把N皇后看会在碰这道题。下面会有N皇后逐步讲解的视频链接和N皇后源码。如果大家已经学会N皇后,自行跳过这一步,直接看2N皇后源码就行了,代码里有详细的注释。传送门→N皇后问题(N Queens) 从示意图到代码PS:这个视频较长,看到理解回溯的原...原创 2020-02-29 13:03:07 · 960 阅读 · 0 评论 -
【解题报告+感想感言】2019年第十届蓝桥杯【C++省赛B组】【第五题:迷宫】
问题描述下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。对于下面这个更复杂的迷宫(30 行 50 列) ,请找出一种通过迷宫的方式,其使用的步数最少,在步数最.原创 2020-10-16 20:37:33 · 774 阅读 · 0 评论 -
【解题报告】2020蓝桥杯B组模拟 计蒜客 结果填空:苹果
问题描述有 3030 个篮子,每个篮子里有若干个苹果,篮子里的苹果数序列已经给出。现在要把苹果分给小朋友们,每个小朋友要么从一个篮子里拿三个苹果,要么从相邻的三个篮子里各拿一个苹果。苹果可以剩余,而且不同的拿法会导致不同的答案。比如对于序列3 1 3 ,可以分给两个小朋友变成0 1 0;也可以分给一个小朋友变成2 0 2,此时不能继续再分了。所以答案是 22 。求问对于以下序列,最多分给几个小朋友?只要是求最多or最少,95%都是宽搜或深搜的思路网上有很多用贪心解的博客, 压根不对,.原创 2020-10-15 16:06:20 · 1127 阅读 · 1 评论 -
【解题报告+通法】_九宫幻方 蓝桥杯 2017年C组第八题(dfs解法)
题目描述小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。 4 9 23 5 78 1 6有意思的是,所有的三阶幻方,都可以通过这样一个九宫格进行若干镜像和旋转操作之后得到。现在小明准备将一个三阶幻.原创 2020-10-15 09:06:25 · 781 阅读 · 0 评论 -
25行代码AC_ 2017年C/C++ A组第四题 方格分割(dfs剪痕+解题报告)
励志用少的代码做高效表达问题描述:6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。 如图:p1.png, p2.png, p3.png 就是可行的分割法。 试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。题意分析几种分析思路:暴力列举: 直接枚举18个点,然后判断。 但时间耗费太高。 放弃。对格子dfs:dfs无法识别T型图案(因为深搜只能遍历一条路),因此放弃想了又想, 如果对边线进行dfs,从中间点出发原创 2020-10-01 20:20:46 · 2306 阅读 · 2 评论 -
45行代码AC_2017年第八届蓝桥杯C/C++ A组第二题(广搜模板+解题报告)
问题描述有9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。 请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,并且保持空盘的位置不变(也就是1-8换位,2-7换位,…),至少要经过多少次跳跃?思考与分析给出结论: 对于从某一状态转换到另一状态,问最少需要多少步, 不出意外都是广搜。广搜的优势在于:第一次遍历到的结果,一定就是最短路径或最少步数.原创 2020-09-29 22:21:14 · 1454 阅读 · 0 评论 -
24行代码AC_Oil Deposits UVA - 572(DFS解法+BFS解法+视频讲解)
Problem descriptionThe GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that dividesthe land into numerous square plots. .原创 2020-09-28 12:24:35 · 783 阅读 · 0 评论 -
44行代码AC_卡片换位(DFS变形题 视频讲解 )
励志用尽量少的代码做高效表达你玩过华容道的游戏吗?这是个类似的,但更简单的游戏。看下面 3 x 2 的格子在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵。还有一个格子是空着的。你可以把一张牌移动到相邻的空格中去(对角不算相邻)。游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。输入格式:输入两行6个字符表示当前的局面输出格式:一个整数,表示最少多少步,才能把AB换位(其它牌位置随意)思路分析思路一:DFS一开始以为需要“数字华容道”游戏的策略,原创 2020-09-26 19:30:35 · 945 阅读 · 0 评论 -
(最优解法)46行代码AC_HDU1242 Rescue(DFS解法+BFS解法)
励志用少的代码做高效表达Problem DescriptionAngel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison.Angel’s friends want to save Angel. Their tas原创 2020-09-22 21:19:05 · 968 阅读 · 3 评论 -
原理详解与标准解法——蓝桥杯_2016年省赛B组 第七题 剪邮票(暴力+迷宫变形)
如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合> 格的剪取。分析与题解本着暴力出奇迹的原则,先用暴力法的思想考虑了一通, 发现用暴力法完全没办法判断格子的连通性, 于是转向DFS解法。正常考虑:每个格子作为起点,DFS连五张格子,最后去重, 最终得到最后结果。但由于正常情况下DFS没办法同时向两个方向保持探索, 因此无法解决T型剪纸的问题,如.原创 2020-09-19 16:14:28 · 2798 阅读 · 0 评论 -
43行代码AC——例题6-8 树(Tree,UVa 548)——解题报告
励志用尽量少的代码做高效的表达。题目大意给定二叉树的中序和后序遍历序列,求该二叉树中根到叶子的路径和最小者,若存在多个解,则选择叶子权值最小者(叶子权值不重复)。思路分析此题本质是中后序建树+求路径最小权。(PS:书上的数组建树用不习惯,于是自己写了一个指针建树。)关键在于中序和后序建树,后序遍历序列的最后一个元素来确定根(前序的话是第一个元素确定根),中序序列来划分左右子树,如此递...原创 2020-03-15 16:15:02 · 683 阅读 · 0 评论