This commit is contained in:
parent
a40cbdf78e
commit
7d85d34745
@ -45,6 +45,7 @@
|
|||||||
- [切割问题](./split.md)
|
- [切割问题](./split.md)
|
||||||
- [子集问题](./subsets.md)
|
- [子集问题](./subsets.md)
|
||||||
- [排列问题](./permute.md)
|
- [排列问题](./permute.md)
|
||||||
|
- [棋盘问题](./chess.md)
|
||||||
|
|
||||||
# STL
|
# STL
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
# 总结
|
# 总结
|
||||||
|
|
||||||
使用场景:
|
使用场景:如果解决一个问题需要多个步骤,而每个步骤都在前一步的基础上进行选择,那么就可以用回溯法。
|
||||||
|
|
||||||
- 如果解决一个问题需要多个步骤,而每个步骤有多个可能的结果,题目又要求我们找出所有可能的结果,那么这个时候可以考虑回溯法。
|
回溯法本质是在一棵树上进行深度优先遍历,因此需要设计好这棵树是如何生成的。
|
||||||
- 回溯法本质是在一棵树上进行深度优先遍历
|
|
||||||
|
|
||||||
算法设计:
|
算法设计:
|
||||||
|
|
||||||
@ -57,10 +56,3 @@ void backtrack(NodeState &node, vector<NodeState> &result, int para1, int para2,
|
|||||||
- 时间复杂度:最长路径长度 × 搜索树的节点数
|
- 时间复杂度:最长路径长度 × 搜索树的节点数
|
||||||
- 空间复杂度:一个节点所需要的空间 × 搜索树的节点数
|
- 空间复杂度:一个节点所需要的空间 × 搜索树的节点数
|
||||||
|
|
||||||
分类:
|
|
||||||
|
|
||||||
- 组合问题:N 个数里面按一定规则找出 k 个数的集合
|
|
||||||
- 切割问题:一个字符串按一定规则有几种切割方式
|
|
||||||
- 子集问题:一个 N 个数的集合里有多少符合条件的子集
|
|
||||||
- 排列问题:N 个数按一定规则全排列,有几种排列方式
|
|
||||||
- 棋盘问题:N 皇后,解数独等等
|
|
||||||
|
3
notes/src/chess.md
Normal file
3
notes/src/chess.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# 棋盘问题
|
||||||
|
|
||||||
|
棋盘问题:N 皇后,解数独等等
|
@ -1,5 +1,7 @@
|
|||||||
# 组合问题
|
# 组合问题
|
||||||
|
|
||||||
|
组合问题:N 个数里面按一定规则找出 k 个数的集合
|
||||||
|
|
||||||
## [77. 组合](https://leetcode.cn/problems/combinations/description/)
|
## [77. 组合](https://leetcode.cn/problems/combinations/description/)
|
||||||
|
|
||||||
![combinations](https://paste.sainnhe.dev/Cytj.png)
|
![combinations](https://paste.sainnhe.dev/Cytj.png)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# 排列问题
|
# 排列问题
|
||||||
|
|
||||||
|
排列问题:N 个数按一定规则全排列,有几种排列方式
|
||||||
|
|
||||||
## [46. 全排列](https://leetcode.cn/problems/permutations/)
|
## [46. 全排列](https://leetcode.cn/problems/permutations/)
|
||||||
|
|
||||||
## [47. 全排列 II](https://leetcode.cn/problems/permutations-ii/)
|
## [47. 全排列 II](https://leetcode.cn/problems/permutations-ii/)
|
||||||
@ -81,3 +83,9 @@ vector<vector<int>> S0047::permuteUnique(vector<int> &nums) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## [332. 重新安排行程](https://leetcode.cn/problems/reconstruct-itinerary/)
|
||||||
|
|
||||||
|
这道题本来是想不到回溯法的,但是如果某道题能够拆分成多个步骤,每个步骤都在前一步的基础上进行选择,那么就可以用回溯法。
|
||||||
|
|
||||||
|
![demo](https://paste.sainnhe.dev/ej8H.png)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# 切割问题
|
# 切割问题
|
||||||
|
|
||||||
|
切割问题:一个字符串按一定规则有几种切割方式
|
||||||
|
|
||||||
## [131. 分割回文串](https://leetcode.cn/problems/palindrome-partitioning/)
|
## [131. 分割回文串](https://leetcode.cn/problems/palindrome-partitioning/)
|
||||||
|
|
||||||
![](https://paste.sainnhe.dev/FHTE.jpg)
|
![](https://paste.sainnhe.dev/FHTE.jpg)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# 子集问题
|
# 子集问题
|
||||||
|
|
||||||
|
子集问题:一个 N 个数的集合里有多少符合条件的子集
|
||||||
|
|
||||||
## [78. 子集](https://leetcode.cn/problems/subsets/)
|
## [78. 子集](https://leetcode.cn/problems/subsets/)
|
||||||
|
|
||||||
其实和切割问题非常像。
|
其实和切割问题非常像。
|
||||||
|
Loading…
Reference in New Issue
Block a user