zoukankan      html  css  js  c++  java
  • [Alg::Trick]小白鼠找毒酒

    题目来源:牛客网
    https://www.nowcoder.com/questionTerminal/c26c4e43c77440ee9497b20118871bf1

    8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要()人测试?

    首先,谴责一下,这道题目三观不正。

    这个题目最重要的部分是只有一次机会,这一次机会就要找到毒酒。

    那么思考一下,如果找到 n 个人试酒,8个小时之后,这 n 个人的状态有两种活着、死了。那么 n 个人总共就有 2^n 种情况,这 2^n 种情况对应着不同的毒酒编号。

    直觉上是要找到最小的 n 使得 2^n >= 8。至少这样算出来的 n 是理论上的最小值,至于是否能够达到,需要另外思考。

    那么具体怎么做呢?

    8瓶酒按照二进制编号:

    000
    001
    010
    011
    100
    101
    110
    111

    找来三个人 A、B、C。

    对酒的编号约定从右侧开始计算,第 0 位、第 1 位、第 2 位。

    对一瓶酒的编号。如果在 0 位上为 1,则 A 需要试这一瓶酒。如果在 1 位上为 1,则 B 需要试这一瓶酒。如果在 2 位上为 1,则 C 需要试这一瓶酒。

    例如 101 号酒,需要 C 和 A 试。

    只有 000 号酒没有被任何人品尝,如果 000 是毒酒,最终没有任何人死亡,皆大欢喜。

    参考:

    1. http://blog.csdn.net/chivalrousli/article/details/20613155
  • 相关阅读:
    敏捷 咨询师 火星人陈勇博客牛人
    fpa 功能点分析法
    cto职责
    lexus
    c
    zz
    百度效率云
    zz
    产品研发体系中的需求承接与输出
    ESAPI学习笔记
  • 原文地址:https://www.cnblogs.com/JingeTU/p/7535667.html
Copyright © 2011-2022 走看看