在全排列问题中,有这样的一个问题,比如给你一个数组[1,2,3,4],求出他的全排列,可以有很多种方法,康拓展开是一个。

但是当出现重复数字时就不好处理了,比如[1,2,1,4],在回溯的过程中,会出现相同的排列,使用两个相同的1造成的,程序的逻辑本身没有错。其实全排列就是递归树,如下所示

观察发现,第二个子树刚开始能不能选1呢,答案是否定的。因为前一个1没有用,这就造成当前选1,接下来有1,2可以选。

这和第一个子树先选1,接下来有1,2可以选,一模一样,所以接下来是完全复制第一个子树的行为。

这和第三颗子树的左右子树相同,左边剩下1,1,先选一个靠前的1,还剩一个靠右的1。又子树,先选第二个1,还剩下左边的1,因为他没有被选。

解决方法:用一个数组记录被选中的数,这在回溯中经常用到,当nums[i] == nums[i - 1] && used[i - 1]  == 0,这时表面当前要选择的数有重复的,要不要选呢,如果前面那个数没有被选,即used[i - 1] == 0,就不要选了。

组合排列中重复数问题相关推荐

  1. 【组合数学】排列组合 ( 排列组合示例 )

    文章目录 一.排列组合示例 1 ( 组合 | 乘法法则 | 加法法则 ) 二.排列组合示例 2 参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示 ...

  2. 排列组合思维导图_排列组合——排列数专题

    在上篇关于排列组合主要考点的介绍中,正男老师提到:排列组合考点通常可以拆分为排列数考点和组合数考点.排列数考点相关试题可以细分为2类,分别为:穷举问题和限制条件问题.本期正男老师就从近六年内的5道涉及 ...

  3. 减治法在生成全排列中的应用(JAVA)--回溯、Johnson-Trotter算法、自字典序

    减治法在生成组合对象问题中的应用 在深入浅出讲算法思想--蛮力法思想分析及应用这篇文章的最优解问题中中已经初步讲解了这类应用,下面我们将使用减治法再次思考这类问题. 1.全排列问题,在数学中求解一个n ...

  4. 递归学习_组合_全组合排列

    Sample Input 3 1 2 3 Sample Output 123 132 213 231 312 321 #include <iostream> using namespace ...

  5. 索玛立方体所有组合/排列,解决方案及代码实现

    基本情况介绍:索玛立方体(3*3*3),可由7块不同形状的积木拼成,且积木标以不同的颜色,即yellow, green, purple, orange, red, dark blue, baby bl ...

  6. 组合测试法是什么 软件测试,组合测试法中的全对偶测试法

    在测试设计过程中,大家都会遇到很多变量进行组合的情况,对相互组合的两个或更多变量进行的测试活动就是组合测试,一般情况下都是使用组合测试法,但这种情况很多测试人员研究得不够深入.测试人员需要开发或了解组 ...

  7. python求123逆序数_应用Python来计算排列中的逆序数个数

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.一个排列中所有逆序总数叫做这个排列的逆序数.也就是说,对于 ...

  8. 2023mathorcupA题量子计算机在信用评分卡组合优化中的应用思路

    2023mathorcup A题 量子计算机在信用评分卡组合优化中的应用思路<gzh数模孵化园>出品 先说说这题难在哪,主要在于计算,计算,还是计算,优化算法的计算,三道题都是考察这个,而 ...

  9. 【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 42页论文及代码

    相关信息 (1)建模思路 [2023 年第十三届 MathorCup 高校数学建模挑战赛]A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现 [2023 年第十三届 Matho ...

  10. 组合电路中的竞争与冒险

    组合电路中的竞争与冒险 1.竞争与冒险 由于逻辑门存在延迟时间以及信号的传输路径不同,当输人信号电平发生瞬间变化时,电路可能产生与稳态时逻辑功能不一致的错误输出,这种现象就是电路中的竞争与冒险. 例如 ...

最新文章

  1. QT:(3)在VS2015下配置qt
  2. 继承有几种方式,分别是什么,想要实现继承可以使用哪些方法
  3. STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
  4. Jerry和您聊聊Chrome开发者工具
  5. RoseHA集群:RHEL+RoseMirror+Oracle【2】
  6. mvc中去除html标签,MVC ValidationMessage 去除上面的Html 标签
  7. 计算机基础三级,三级数据库计算机基础知识
  8. jsp和mysql答辩_如何应对JSP连接MySQL数据库问题_网站数据库怎么连接到网页答辩问题...
  9. 苹果CMSV10好看的模板灰黑色爱看影院自适应炫酷黑模板
  10. SQL Server MDF 文件打开和相关问题图解
  11. java 递归层级拼接_使用递归方法拼接层级树
  12. 超全山东华为天翼网关电信光猫HS8145c超级密码获取
  13. 一个页面崩溃,其他页面也跟着崩溃
  14. IP 地址 与硬件地址
  15. 扫雷外挂的设计与实现
  16. matebook13、14 C盘扩展
  17. 苹果手机怎么下载铃声
  18. Mac安装MongoDB(极简)
  19. python有向图遍历_用Networkx进行有向图遍历
  20. 中路由怎么配置_【国土语录 第64期】茶队点金大鱼后发生了什么;否定Fy关于茶队中路看法...

热门文章

  1. 经度纬度地图搜索器_百度地图搜索经度纬度_地球经度纬度示意图
  2. mysql跨库复制_mysql跨库表结构和数据复制
  3. 360浏览器html文件无图标,电脑桌面360浏览器图标不见了解决方法图文教程
  4. kaldi中文语音识别
  5. Postman汉化版本竟如此简单,全中文真香
  6. 名字作诗,增添你的印象分
  7. 张学孟 (帮别人名字作诗)
  8. CSS盒子模型居中方法,高级面试题+解析
  9. ubuntu双系统修改启动菜单
  10. kubernetes快速切换集群和名称空间