有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的 药物,最少需要多少只小白鼠?

本文主要是介绍有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的 药物,最少需要多少只小白鼠?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

天堂之鼠

在这里插入图片描述

文章目录

  • 天堂之鼠
  • 原题题目(某个面试题):
    • 有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
    • 以下给出两种思路:
  • 一、二分法(用树遍历)
  • 二、二进制
    • 1.药水小鼠分类
    • 2.按照小鼠死亡情况写二进制


原题题目(某个面试题):

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

以下给出两种思路:


一、二分法(用树遍历)

首先我们看到这个题,最基本的想法就是一个小鼠肯定喝多个药水,不然1000个药水999个小鼠意义何在(^_−)☆

其次就是怎么去划分的问题??? 那么你可能会想到算法,想到树。

这里我们拿计算机内存来说
一个16位宽度的位址总线可以寻址到2的16次方=65536=64KB的内存位址,而一个32位位址总线寻址到2的32次方4,294,967,296=4GB的位址。

那么现在假设有8瓶药水,很明显你知道至少需要3个小鼠,那么怎么去分配???
在这里插入图片描述
在这里采用二分法把1-8分成两部分,1-4和5-8,让小鼠1喝1-4 药水如果小鼠1死了就说明毒药在1-4之中
继续二分, 1-4分为1,2和3,4但是要注意让小鼠2喝 1,2,5,6(必选上一分支的一半)之后让小鼠3喝1,3,5,7
如果小鼠1死了说明毒药在1-4中,如果小鼠2死了忽略喝掉无毒的5 ,6, 毒药在1和2中。 如果小鼠3死了说明1是毒药。

那么同理1-1000个药水,依次二分
1-500 501-1000。 1-250 , 251-500,501-750, 751-1000 …
依次二分用树遍历总共10层,也就是2的10次方 = 1024 > 1000.完成遍历同时第一个小鼠喝1-500,第二个小鼠喝1-250和501-750…依次下去

二、二进制

同样这种方法也是应用2的n次方,2的10次方= 1024 >1000.

1.药水小鼠分类

将药水编号按二进制排列,并且一共10位对应10只小鼠,如图:
个位对应小鼠10,依次类推:
在这里插入图片描述

小鼠10喝掉所有对应二进制第一位是1的药水即:编号为1 3 5 7 …的
小鼠 9 喝掉所有对应二进制第二位是1的药水即:编号为2 3 6 7 …的

依次类推…

2.按照小鼠死亡情况写二进制

在编号喝药水之后,我们观察老鼠死亡情况一旦有老鼠死亡,就在对应的二进制位数上置1,不死置0,得到的就是毒药水编号对应的二进制。

那么肯定有小伙伴问为什么呢????????????
在这里插入图片描述
我们来假设7号是毒药水,其二进制为0000 0111,那么凡是喝过7号的都得上天堂∑(っ°Д°;)っ卧槽,不见了,对应的有1的位数也就是小鼠8,小鼠9,小鼠10都会上天堂。所以对应位数就会置1.


在这里插入图片描述

这篇关于有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的 药物,最少需要多少只小白鼠?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/473287

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

找出php中可能有问题的代码行

前言 当你发现一个平时占用cpu比较少的进程突然间占用cpu接近100%时,你如何找到导致cpu飙升的原因?我的思路是,首先找到进程正在执行的代码行,从而确定可能有问题的代码段。然后,再仔细分析有问题的代码段,从而找出原因。 如果你的程序使用的是c、c++编写,那么你可以很容易的找到正在执行的代码行。但是,程序是php编写的,如何找到可能有问题的代码行呢?这个问题就是本文要解决的问题。 背景

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一:CSS样式(2)、方式二:JS 3. 控制二三级数据隐藏与显示--绑定styl

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成

找出有毒的那一瓶药

找出有毒的那一瓶药 找出有毒的那一瓶药问题描述求解方法二进制编码方法详细示例 找出有毒的那一瓶药 问题描述 有47瓶药,其中只有一瓶有毒。从中毒到死亡时间为4天,问最少准备几只老鼠,在4天时间内找出有毒的药? 求解方法 要在4天内确定有毒药瓶,最少需要 6 只老鼠。以下是如何使用这 6 只老鼠来找出有毒药瓶的方法。 二进制编码方法 药瓶编号: 将47瓶药瓶编号从1到

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

js基础需要注意的点

1 js中单引号和双引号都能创建字符串,但是html的元素属性规定必须用双引号,所以js优先用单引号定义字符串。

作为刚从事Java开发的小白,需要掌握哪些技能

作为一个刚踏入Java开发世界的小白,面对各种技术和工具,你可能会觉得有点不知所措。但是别担心,我会给你一个简单清晰的路线图,让你可以有条不紊地掌握基本技能,逐步成长为一名Java开发者。 1. 扎实的Java基础 Java的基础是你迈向高级开发的重要基石,建议从以下几个方面着手: 语法和基础概念:比如变量、条件语句、循环、方法、数组、面向对象编程(OOP)等等。这些基础如同建房子的地基,越