组合

作者: sky_fighting | 来源:发表于2018-07-19 09:55 被阅读19次

    题目:

    有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"]
    

    相关文章

      网友评论

          本文标题:组合

          本文链接:https://www.haomeiwen.com/subject/szyzpftx.html