![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DFS
青衫客36
这个作者很懒,什么都没留下…
展开
-
Acwing-1116. 马走日
本题求有多少路径遍历棋盘上的所有点,属于外部搜索,所以需要回溯。另外,对于递归终止条件,我们添加一个参数用来表示当前遍历到第几个点,如果是n*m表明已经将棋盘遍历一遍了,方案数+1,return即可。原创 2023-01-28 20:58:43 · 179 阅读 · 0 评论 -
Acwing-1113. 红与黑
【代码】Acwing-1113. 红与黑。原创 2023-01-28 10:54:31 · 178 阅读 · 0 评论 -
Acwing-1112. 迷宫
【代码】Acwing-1112. 迷宫。原创 2023-01-27 15:43:02 · 112 阅读 · 0 评论 -
leetcode-46. 全排列
【代码】leetcode-46. 全排列。原创 2022-11-17 11:12:03 · 112 阅读 · 0 评论 -
Acwing-51. 数字排列
3、对于相同数,我们人为定序,就可以避免重复计算:我们在dfs时记录一个额外的状态,记录上一个相同数存放的位置 start,我们在枚举当前数时,只枚举 start+1,start+2,…,nstart+1,start+2,…由于有重复元素的存在,这道题的枚举顺序和 Permutations 不同。1、先将所有数从小到大排序,这样相同的数会排在一起;2、从左到右依次枚举每个数,每次将它放在一个空位上;4、不要忘记递归前和回溯时,对状态进行更新。转载 2022-11-16 18:45:18 · 139 阅读 · 0 评论 -
LeetCode-矩阵中的路径
时间复杂度分析:单词起点一共有 n^2 个,单词的每个字母一共有上下左右四个方向可以选择,但由于不能走回头路,所以除了单词首字母外,仅有三种选择。所以总时间复杂度是 O(n^2*3^k)。过程中需要将已经使用过的字母改成一个特殊字母,以避免重复使用字符。我们先枚举单词的起点,然后依次枚举单词的每个字母。原创 2022-10-26 17:03:09 · 138 阅读 · 0 评论 -
Acwing 842. 排列数字
【代码】Acwing 842. 排列数字。原创 2022-10-01 11:40:36 · 92 阅读 · 0 评论 -
Acwing 843. n-皇后问题
设置col[i]数组来表示第i列是否放置了象棋,dg[n - u + i]表示对角线(下图蓝色线)上是否放置了象棋,udg[u + i]表示反对角线(下图绿色线)上是否放置了象棋。A1:上图蓝色线的直线方程为y = x + b, 截距b = y - x,但是y - x可能是负数,所以加上偏移量n,使得dg数组的索引为非负数。注:x即为程序中的u表示放在棋盘中的哪一行,y即为程序中的i表示放在棋盘中的哪一列。Q1:dg[n - u + i]表示蓝色线,n - u + i 是怎么来的?原创 2022-10-01 10:38:20 · 82 阅读 · 0 评论 -
Acwing 846. 树的重心
本题的本质是树的dfs,每次dfs可以确定以u为重心的最大连通块的节点数,并且更新一下ans。即dfs不直接返回答案,而是在每一次以u为根节点的遍历中更新一次答案。树的dfs模板(邻接表版)原创 2022-09-30 10:34:53 · 128 阅读 · 0 评论