Day20 | Part1
约 273 个字 29 行代码 预计阅读时间 1 分钟
理论概述
回溯法又称为回溯搜索法,它是一种搜索的方式, 本质是穷举
- 回溯是递归的的副产品, 只要有递归就有回溯
解决的问题:
- 组合问题: N个数里面按一定的规则找出k个数的集合
- 切割问题: 一个字符串按一定规则有几种切割方式
- 子集问题: N个数的集合有几个符合条件的子集
- 排列问题: N个数按一定规则全排列,有几种方式
- 棋盘问题: N皇后, 解数独等...
回溯算法解决的问题都可以抽象为树形结构, 一般在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。→ 图片参考
伪代码模板参考:
1 2 3 4 5 6 7 8 9 10 11 |
|
77.组合
给定两个整数 n 和 k,返回范围
[1, n]
中所有可能的 k 个数的组合
暴力的话,k是几就几层循环, 但代码如何实现? → 利用回溯抽象成树形结构, 如图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|