遍历所有的组合方式

  • 简介

    • 经典的数学组合问题,对应之前的排列问题。
  • 问题描述
    • 现在有四本书为A,B,C,D,要求选出两本,输出所有的选择情况。
  • 问题分析
    • 和之前一样,如果试求组合数目,那么DP将会是一个不错的选择,但是DP不是很擅长这种序列输出的题。
    • 其实,这还是个回溯题,因为每一步的问题都是一样的只不过参数不一样罢了。
      • 每一步都是在剩余书籍中挑出一本。
      • 与之前的排列问题不同之处在于选过的书本不可以选了,也就是选了AB,B后面的选择就没有A了。
    • 实现与排列类似
  • 代码
    •   # -*-coding:utf-8-*-# -*-coding:utf-8-*-result = []def solve(array, number, solution):global resultif len(solution) == number:# 表示所有书都分配完毕,输出答案result.append(solution)returnfor i in range(len(array)):new_solution = solution + [array[i]]new_array = array[i+1:]solve(new_array, number, new_solution)if __name__ == '__main__':input = ['A', 'B', 'C', 'D']solve(input, 2, [])for item in result:print(item)print("共{}种组合".format(len(result)))
      
  • 运行结果
  • 补充说明
    • 具体代码可以查看我的Github,欢迎Star或者Fork
    • 参考书《你也能看得懂的Python算法书》
    • 书中错误已经修改

回溯算法-02遍历所有组合方式问题相关推荐

  1. 回溯算法-01遍历所有排列方式问题

    遍历所有排列方式 前言 回溯采用试错的方法解决问题,一旦发现当前步骤失败,回溯算法就返回上一个步骤,继续另一种方案继续试错. 回溯算法的优点是速度快,没有尝试所有路径就可能找到答案.当然,如果运气不好 ...

  2. 算法训练Day24 | 回溯算法理论基础;LeetCode77.组合(经典的回溯问题)

    目录 回溯算法理论基础 1. 什么是回溯法 2. 回溯法的效率 3. 回溯法解决的问题 4. 如何理解回溯法 5. 回溯法模板-- 回溯三部曲 6. 总结 LeetCode77.组合 1. 思路 2. ...

  3. 回溯算法解子集、组合、排序

    转载labuladong:力扣 代码方面,回溯算法的框架: result = [] def backtrack(路径, 选择列表):if 满足结束条件:result.add(路径)returnfor ...

  4. 回溯算法(全排列、组合、N皇后问题)

    回溯算法(全排列.N皇后问题) 暴力穷举,这是不可避免,因为回溯法没有重复子结构,所以其时间复杂度大于等于O(N!): 前言 本文章内容部分参考公众号labuladong关于回溯算法的讲解,仅为笔者日 ...

  5. Suzy找到实习了吗 Day24 | 回溯算法开始啦:回溯的理论知识,77组合(有一个问题没有解决)

    回溯算法理论 回溯算法解决的问题 组合问题 切割问题 子集问题 排列问题 棋盘问题 算法模板 函数没有返回值 业界给回溯算法命名:backtracking 算法伪代码模板 def backtracki ...

  6. 【回溯算法】【打卡第179道】:leetCode :39. 组合总和(数组中的元素可以重复使用)

    1.题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式 ...

  7. 常用十大算法 非递归二分查找、分治法、动态规划、贪心算法、回溯算法(骑士周游为例)、KMP、最小生成树算法:Prim、Kruskal、最短路径算法:Dijkstra、Floyd。

    十大算法 学完数据结构该学什么?当然是来巩固算法,下面介绍了十中比较常用的算法,希望能帮到大家. 包括:非递归二分查找.分治法.动态规划.贪心算法.回溯算法(骑士周游为例).KMP.最小生成树算法:P ...

  8. 小白易懂的回溯算法!!!

    1.什么是回溯算法? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法, ...

  9. [学习记录]回溯算法及其应用

    目录 一.简介 二.回溯算法的应用 三.回溯算法的模板 四.回溯算法解决子集问题 (一)子集问题描述 (二)问题解决 (三)代码实现 (四)剪枝操作 五.回溯算法解决分割问题 一.简介 回溯与递归是相 ...

最新文章

  1. 八种常见排序方法总结 C/C++代码实现
  2. 两个计算机系统安装,如何在一台电脑上同时重装两个系统|戴尔电脑怎么安装两个系统...
  3. Java-reflect(反射)初步理解_1
  4. python网页表格读取_是否可以读取网页html表格数据?
  5. 收藏 | 图像处理Transformer:华为诺亚、北大等IPT模型,刷榜
  6. 【剑指Offer】29、最小的K个数
  7. Twisted入门教程(10)
  8. JavaScript的实现
  9. 电商系统中商品模型与类目体系设计
  10. C++使用librdkafka创建消费者和生产者
  11. 魔百盒ZXV10 B863AV3.2-M/B863AV3.1-M2_S905L3A-B_线刷+卡刷精简固件
  12. dcs常用的冗余方式_DCS系统冗余技术讲解
  13. win7 x64部署和串口调试虚拟驱动toaster
  14. 萌言萌语|测试工作日报及总结
  15. Eclipse 查看类继承和实现关系(包括子类)
  16. 水星路由器设置成交换机
  17. base-64 字符数组的无效长度
  18. 血脂测试软件,血脂检测,最全解读!
  19. Vue 和 React 的区别
  20. bpmn不带网关的流程

热门文章

  1. MyBatis 源码解读-会话创建过程
  2. MyBatis 源码解读-reflectorFactoryElement()
  3. RocketMQ消息存储的整体结构
  4. Tomcat集群快速入门:Nginx+Tomcat搭建集群
  5. Bootstrap全局css样式_按钮
  6. Java8函数式编程(2)--流与管道
  7. 财政指标是什么意思_in the black是“在黑暗中”吗?那in the dark是什么意思?
  8. 【报错笔记】使用MultipartFile 出现异常:java.lang.ClassNotFoundException: org.apache.commons.fileupload...
  9. python 网络爬虫requests模块
  10. 一行代码,保障分布式事务一致性—GTS:微服务架构下分布式事务解决方案