[代码随想录]Day21-回溯算法part01

题目:77. 组合

思路:

回溯就是dfs的一个特殊情况也就是递归的一种情况,值得注意的一点:

要记得深拷贝,不然最后全是空

代码:

var res  [][]int
var path []int
func combine(n int, k int) [][]int {
    res = [][]int{}
    path = make([]int, 0,k)
    Combine(n, 1, k, 0) 
    return res
}
func Combine(n, start, k, lens int) {
    if lens == k {
        x := append([]int{}, path...)
        res = append(res, x)
        return
    }
    for i := start; i <= n; i++ {
        path = append(path, i)
        Combine(n, i+1, k, lens+1) // 递归
        path = path[:lens] // 回溯
    }
}

参考:

代码随想录

posted @   WtcSky  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示