介绍

1000桶酒,其中1桶有毒。用小老鼠做实验,一旦吃了有毒的酒,一周后小老鼠毒性就会发作而亡。问如何在最短的时间内用最少的老鼠找到那桶有毒的酒?

思路一

将现有的酒分成两组,分别将两组酒混合后喂给两只老鼠,1周以后即能分出哪组里存在毒酒;依次类推的话。

2的10次方为1024,因此进行10次迭代操作,即可找到那桶毒酒。总计使用20只老鼠,10周时间找到毒酒桶。

这个估计大部分程序员都能想到的方案,但这个不是最佳的方案。

思路二

给现有的桶按1-1000的编号,最大编号为1000,其二进制表示11 1110 1000,共10位。我们使用10只老鼠,编号分别为:

第01只  00 0000 0001
第02只  00 0000 0010
第03只  00 0000 0100
第04只  00 0000 1000
第05只  00 0001 0000
第06只  00 0010 0000
第07只  00 0100 0000
第08只  00 1000 0000
第09只  01 0000 0000
第10只  10 0000 0000

然后根据桶编号给相应的老鼠喂酒,如编号为100的酒桶,其二进制表示为00 0110 0100,其中从左边数第3、6、7位为1,取这桶中的酒喂给编号为3、6、7的老鼠,依次类推,将所有酒桶取酒喂给相应的老鼠。一周以后,根据死亡老鼠的编号,可以找出的酒桶,举个例子:比如第1、2、3、4只老鼠死亡了,那么表示的二进制数为 00 0000 1111,转换成10进制为15,因此可以推断出编号为15的酒桶中的酒有毒。

这确实是一种比较精巧的解法,依据二进制的表示,快速找到有问题的酒桶。

Java算法面试题(009) 毒酒问题相关推荐

  1. Java算法面试题(007) 蒙提霍尔问题(三门问题)

    简介 此问题本身和算法无关,本质上一个关于概率的问题,在一些高等级的面试也经常被问及,因此收录在Java算法面试题系列中. 三门问题(Monty Hall problem)亦称为蒙提霍尔问题.蒙特霍问 ...

  2. 记一道超级简单的 Java 算法面试题,但无人通过

    点击上方蓝字设为星标 下面开始今天的学习- 作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 ...

  3. java算法面试题_【干货】经典算法面试题代码实现-Java版

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 面试题3:二维数组中的查找 题目描述:一个二维数组,每一行从左到右递增,每一列从上到下递增.输入一个二维数组和一个整数,判断数组中是否含有整数. publ ...

  4. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg...

    package com.swift;import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; im ...

  5. Java算法面试题 一个顺子带一对

    打牌里面经常出现的5张牌,一个顺子带一对,给你五张牌,比如:1,2,2,2,3 或者 5,6,7,4,4 或者 2,4,3,5,5 或者 7,5,9,6,9 ,这种情况就符合一个顺子带一对,则返回 t ...

  6. 记一道超级简单的算法面试题,90%的人没能完整答出来

    作者:方志宏(已获作者授权转载,禁止二次转载) 来源:https://zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道 Java 算法面试题了. 题目很简单,完成 ...

  7. twitter java_Twitter算法面试题详解(Java实现)

    最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案.先看一下题目. 图1 先看看图图1.可以将方块看做砖 ...

  8. java面笔试_java笔试手写算法面试题大全含答案

    java笔试手写算法面试题大全含答案 1.统计一篇英文文章单词个数. public class WordCounting { public static void main(String[] args ...

  9. java常见算法面试题

    java常见算法面试题 Java的冒泡排序,快速排序,归并排序,计数排序,二分查找法 1.斐波那契数列 1.斐波那契数列又叫黄金分割和兔子数列 :1.1.2.3.5.8.13.21.34.-- 在数学 ...

  10. 微软的100道算法面试题(终结版)

    前言 数据结构与算法的重要性已不言而喻,最近,我整理出十大经典排序算法.五大常用算法总结,今天特意整理出微软面试的100题,若有不足之处,欢迎指正!由于篇幅过长,前30道题目写在上一篇,大家可以进我的 ...

最新文章

  1. Android——学习:线性布局权重分配
  2. 户外私密Party| 在大峡谷中聊点平时不能聊的产品干货(报名结束)
  3. systemctl添加开机启动
  4. python教程怎么读_python怎么读本地文件
  5. 关于Spring中IOC容器和AOP协同工作的原理理解
  6. CPU:别再拿我当搬砖工!
  7. python优秀源码新闻系统_[内附完整源码和文档] 基于python的新闻检索系统
  8. C# 之 Stream 和 byte[] 的相关转换
  9. 计算机办公软件考证教学总结,考证经历——办公软件的套路
  10. 基于python的学生信息管理系统
  11. 从零手写VIO(三)——LM算法
  12. 手机抢答器正在替代传统抢答器
  13. 计算机博弈大赛源代码,2020计算机博弈大赛幻影围棋分组第一天 信息交互模块...
  14. Android 集成google地图
  15. linux压缩文件zip,在 Linux 上压缩文件:zip 命令的各种变体及用法
  16. Python系列20-Web应用程序-用户账户
  17. win7重装的那些事儿
  18. mac如何看html5视频播放器,适用于Mac的HTML5视频播放器
  19. MySQL 主从幂等复制slave_exec_mode=IDEMPOTENT
  20. 关闭腾讯网迷你版(登录qq后的广告弹窗)

热门文章

  1. cad查看_CAD快速看图 for mac(CAD图纸查看工具) v4.3.7中文版
  2. 激光锡焊在SMA连接器领域的应用
  3. YYKit系列之——YYModel使用
  4. 江湖魔头-BugkuCTF平台
  5. Java项目:Springboot图书馆图书借阅管理系统
  6. excel冻结窗口_东莞黄江办公自动化培训零基础电脑Excel培训中心
  7. 雷云3编辑使用宏鼠标连点
  8. 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
  9. 2019计算机二级vb考试大纲,2019年全国计算机二级VB试题
  10. 汉王考勤管理软件mysql数据库配置_汉王人脸通考勤管理软件