组合

题目:

有15个瓶子,其中最多有一瓶有毒,现在有四只老鼠,喝了有毒的水之后,第二天就会死。如何在第二天就可以判断出哪个瓶子有毒(题目来源:https://juejin.im/post/5b3c40f4e51d45191a0d0aae)

解决思路:

老鼠有4只,计算所有组合:


组合公式.png
老鼠组合计算.png

一共15种,正好一种组合对应一个瓶子,第二天哪个组合的老鼠死了,就是哪瓶水有毒

代码计算四只老鼠的所有组合

let arr: [String] = ["a", "b", "c", "d"]
var finalArr: [String]? = Array()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
//        组合
    for i in 0..<arr.count{
        finalArr?.append(arr[i])
        combine(temp: arr[i], index: i+1)
    }
    AFPrint(message: finalArr)
    
}
private func combine(temp: String, index: Int){
    for j in index ..< arr.count{
        finalArr?.append(temp + arr[j])
        combine(temp: temp + arr[j], index: j + 1)    //递归
    }
}
//输出结果:
["a", "ab", "abc", "abcd", "abd", "ac", "acd", "ad", "b", "bc", "bcd", "bd", "c", "cd", "d"]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近研究了下最优风险资产组合这个题目。本小白在金融领域是个纯粹的初学者,开始的时候,有点不知所措。 后来在网上找了...
    丁立在简书阅读 34,502评论 16 109
  • 排列组合的定义 排列的定义:从n个不同元素中,任意取m个元素,m≤n且m和n都是自然数,按照一定顺序排成一列,叫做...
    伍帆阅读 10,581评论 6 10
  • 排列和组合讲解 各位伙伴大家早上好,因为这个时间我是在上班路上不太方便跟大家直播, 所以我提前录了一个视频,也是完...
    百万机器猫阅读 13,471评论 4 6
  • 带着冰叔新作,七爷送的书籍,木槿菇凉送的吃的喝的阿哈哈!下火车一定会胖胖的。(大捂脸) 听着民谣开往北京的火车,就...
    行走的三年阅读 4,123评论 3 4
  • 本文参加#未完待续,就要表白#活动,本人承诺,文章内容为原创,且未在其他平台发表过。 岁月带来皱纹、白发和肚腩,但...
    MOONPieo阅读 2,860评论 2 2