回溯模板:
1、77. 组合
题目:
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
思路:
- 很经典的回溯,也是回溯中模板的经典应用,因而是回溯中的简单题
func combine(n int, k int) [][]int {
//代码二刷
list := make([]int, 0)
res := make([][]int, 0)
backtrack(&res, list,n,k,1)
return res
}
func backtrack(res *[][]int, list []int, n,k,index int,) {
if len(list) == k {
// 满足结束条件
ans := make([]int, len(list))
copy(ans, list)
*res = append(*res, ans)
return
}
for i:=index; i<=n;i++ {
list = append(list, i)
backtrack(res, list, n,k,i+1)
list = list[:len(list)-1]
}
}