当前位置: 首页 > article >正文

算法训练营day21,回溯1

77. 组合

func combine(n int, k int) [][]int {

  //存储全部集合

  result := make([][]int, 0)

  //存储单次集合

  path := make([]int, 0)

  var backtrace func(n int, k int, startIndex int)

  backtrace = func(n int, k int, startIndex int) {

    //当单次集合大小和k值相等,找到本次集合,但path需要一直使用需要用temp临时存储然后赋给result

    if len(path) == k {

      temp := make([]int, k)

      copy(temp, path)

      result = append(result, temp)

      return

    }

    for i := startIndex; i <= n; i++ {

      if n-i+1 < k-len(path) { // 剪枝

        break

      }

      path = append(path, i)

      backtrace(n, k, i+1)

      //回溯处理

      path = path[:len(path)-1]

    }

  }

  backtrace(n, k, 1)

  return result

}


http://www.kler.cn/a/227642.html

相关文章:

  • 反洗钱_4_反洗钱工作主要内容(重点)
  • android tv开发-1,leanback 2
  • CSC联合培养博士申请亲历|联系外导的详细过程
  • 新版MQL语言程序设计:代理模式的原理、应用及代码实现
  • Postgresql数据库存储过程中的事务处理
  • 代码随想录刷题笔记 DAY 21 | 二叉搜索树的最小绝对值差值 No.530 | 二叉搜索树中的众数 No.501 | 二叉树的最近公共祖先 No.236
  • 全自动网页生成系统重构版源码
  • Cox等级资料是个坑
  • 九、开发进度月报
  • React从 EMAScript5编程规范到 EMAScript6编程规范过程中的几点改变
  • 使用最大边界相关算法处理文章自动摘要
  • 自动驾驶:Apollo如何塑造人类的未来出行
  • pgsql中in 和 join 怎么选
  • 缓存的概念
  • 【QT+QGIS跨平台编译】之二十一:【freetype+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 记录首次使用yolov8-obb
  • week03day03(文件操作、正则表达式1)
  • 【C++入门学习指南】:函数重载提升代码清晰度与灵活性
  • 小程序中封装下拉选择框
  • 从传统到现代:易点易动固定资产管理系统利用RFID技术高效管理固定资产