写在前面:在看这篇题解前,首先需要学会基本的树型dp是什么,推荐一道题,是本题的简单版。 传送门 本题:题目链接 这是我第一次接触最大连通子树的题。 常规的树型DP,是先dfs求取子树的最优解,再回溯更新父节点的最优解。比如构造一棵最值线段树的过程就是这样: 每一个节点的最优解只受到子节点的影响,而 ...
分类:
其他好文 时间:
2020-03-18 11:22:33
阅读次数:
53
DFS算法:一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。属于盲目搜索,最糟糕的情况算法时间复杂度为O(!n)。 DFS算 ...
分类:
其他好文 时间:
2020-03-15 23:44:28
阅读次数:
70
转自:https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741376.html1. 1.回溯解法框架 我觉得这个递归方法更好理解,迭代的方法我没太看懂。 1: int a[n]; 2: try(int i) 3: { 4: if(i>n) ...
分类:
其他好文 时间:
2020-03-15 00:06:04
阅读次数:
53
1 做法:第一步随便放一个棋子,然后找安全位置放第二个棋子,然后放好后再找安全地放第三个x棋子,以此类推 2 详细解释:https://www.bilibili.com/video/av76265320?from=search&seid=10595269197283770223 3 #include ...
分类:
编程语言 时间:
2020-03-14 12:35:24
阅读次数:
64
1. 问题简述 将马随机放在国际象棋的8×8棋盘的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格 2. 思路 2.1 步骤 (遍历 + 回溯) 1. 创建棋盘chessBoard,一个二维数组 2. 将当前位置设置已访问标记(当前 step),然后根据当前位置,计 ...
分类:
其他好文 时间:
2020-03-14 01:13:34
阅读次数:
61
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 ...
分类:
其他好文 时间:
2020-03-11 23:50:43
阅读次数:
59
1.新建文件:alt+ins2. 运行:shift+f103. 跳到下一个断点:alt+f94.查看函数使用文档:ctrl+q5.向前缩进一大格:shift+tab6.快速访问文件:选择文件名,再ctrl+q7.重命名同一个变量:选择变量,再shift+f68.上下移动选好的语句:ctrl+shif ...
分类:
其他好文 时间:
2020-03-10 11:55:58
阅读次数:
55
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 代码: class Solution: def __init__(self): self.res = [] def partition(self, s: str) -> List[List[str]] ...
分类:
编程语言 时间:
2020-03-08 19:19:36
阅读次数:
77
给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 想法:本题跟我们9021 quiz7-8的类型是一样的,9024也用C写过一次,都是在二维数组里搜 ...
分类:
编程语言 时间:
2020-03-08 13:41:58
阅读次数:
82
python实现迷宫问题的栈和队列的解决方法: #迷宫问题#表示迷宫的颜色,0表示路通,1表示围墙maze=[ [1,1,1,1,1,1,1,1,1,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,0,0,1,1,0,0,1], [1 ...
分类:
其他好文 时间:
2020-03-07 12:35:56
阅读次数:
106