/*** 十只老鼠试验一千瓶药水,只有一瓶有毒,怎么找出有毒的那瓶?** 1000,转为二进制为11 1110 1000,共十位,每只老鼠各对应一位,* 比如3的二进制为0011,第1、2上为1,就让第1、2只老鼠都喝编号为3的药水,*     8的二进制为1000,第4位上为1,就让第4只老鼠喝编号为8的药水 ...*     15的二进制为1111,1到4位都为1,就让第1、2、3、4只老鼠都喝编号为15的药水*     1000的二进制为11 1110 1000,就是第4、6、7、8、9、10只老鼠老要喝编号为1000的药水* 每瓶药水都试完后,通过老鼠有没有喝药水就可以把1到1000所有的数字表示出来** 喝了,则这只老鼠所在位上就为1,没喝就为0** 像上面示例中,第15瓶药水有毒则第1、2、3、4只老鼠中毒,*              第8瓶药水有毒则只有第4只老鼠中毒,*              第3瓶药水有毒则第1、2只老鼠中毒*/public static void main(String[] args) {//给每只老鼠编号,且各自对应一个集合Map<Integer, List<String>> mouseMap = new HashMap<>();for (int i = 1; i <= 10; i++) {mouseMap.put(i,Lists.newArrayList());}//把药水进行编号,并转为二进制,二进制最多十位,// 第一只老鼠对应二进制的第一位,第二只对应第二位.........第十只对应第十位// 药水编号的二进制哪一位上有1,就让那一位上对应的老鼠喝掉这个编号的药水//比如,1101,第一、三、四位上为1,那1、3、4号老鼠就要喝这瓶药水for (int i = 1; i <= 1000; i++) {String s = Integer.toBinaryString(i);for (int j = 1; j < 11; j++) {List<String> list = mouseMap.get(j);if(s.length() >= j && s.charAt(s.length() - j) == '1'){list.add(s);}}}//把有毒的药水编号转为二进制,那么这个二进制上哪一位上为1的对应编号的老鼠就会死掉//如果第43瓶,转为二进制为10 1011,则第一、二、四、六只老鼠会中毒// 最后执行结果为mouse1、mouse2、mouse4、mouse6String s = Integer.toBinaryString(43);for (int j = 1; j < 11; j++) {List<String> list = mouseMap.get(j);if(list.contains(s)){System.out.println("mouse"+j);}}}

十只老鼠在1000瓶药水中找一瓶有毒的相关推荐

  1. 十只老鼠和一千瓶毒药的故事

    十只老鼠和一千瓶毒药的故事 问题描述:有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药. 任何喝下毒药的生命都会在一星期之后死亡.现在你只有10只小白鼠和1个星期的时间,如何检验出哪 ...

  2. 1000瓶药水,只有一瓶是有毒的,如何使用最少的小白鼠测出那瓶是毒药?

    面试题如下:有1000瓶药水,只有一瓶是有毒的,小白鼠喝了就会身亡,但是需要一天的时间才会有结果,而且你只有一天时间去判断,问题是,如何使用最少的小白鼠,试验出哪瓶是毒药? 答: 转换成二进制,最少需 ...

  3. 10只小白鼠1000支药水找出毒药问题

    偶然间看到了这道题:10只小白鼠,1000支药水有且仅有一支是毒药,毒药发作时间是两个小时,忽略小白鼠喝药水的时间以及其他影响因素,每支药水足够多,问:如何利用这10只小白鼠在两个小时内找到那支毒药? ...

  4. 10只老鼠与1000瓶药水

    题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验.喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡.如何在一天之内(第二天)找出这瓶有毒的药水? 思路:10只小白鼠, ...

  5. 1000瓶药中找出一瓶毒药,10只老鼠做试验

    题目如下:现有1000瓶药,其中有一瓶毒药,喝了之后1小时后才产生效果,现在你有10只老鼠和1个小时的时间,请问怎么找出毒药? 题解:这道题明显就是只能一开始就把所有药都喂给10只老鼠,1小时后就直接 ...

  6. D28 1000瓶药中找出一瓶毒药,10只老鼠做试验

    题目:现有1000瓶药,其中有一瓶毒药,喝了之后1小时后才产生效果,现在你有10只老鼠和1个小时的时间,请问怎么找出毒药? 解题: 这道题明显就是只能一开始就把所有药都喂给10只老鼠,1小时后就直接一 ...

  7. 十只老鼠和一千瓶毒药的故事。。。

    问题描述:有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药. 任何喝下毒药的生命都会在一星期之后死亡.现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药? 解答: 根据 ...

  8. 毒酒问题---1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。问最少需要多少只老鼠可在一周内找出毒酒

    如题. 本题考查的是二进制编码问题. 如对1000桶按1~1000编码,需要10位二进制数. 因此只需要取10只老鼠,每只老鼠只喝其对应位数为1的编号的酒. 即10只老鼠按以下编码: 第一只 0000 ...

  9. (小白鼠喝药问题)1000瓶药水,其中有一瓶是有毒的,如何找出有毒的药水?

    问题描述 有 1000 瓶药水,但是其中有一瓶是有毒的,小白鼠只要喝了任意剂量的药水,24小时内就会死掉!请问,要在24小时内找出有毒的药水,最少需要多少只小白鼠? 解答 至少需要10只. 分析 1. ...

最新文章

  1. hive 列转行_掌握这个SQL技巧超越80%的人——行转列/列转行
  2. Java语言的循环控制结构
  3. 分布式理论(一) - CAP定理
  4. 二叉树的前序,中序,后序,层序遍历的递归和非递归实现
  5. 【Flask项目】sqlalchemy原生sql查询,返回字典形式数据
  6. 洛谷 - P3391 【模板】文艺平衡树(Splay-区间反转)
  7. 将递归文件系统遍历转换为流
  8. 学习 | MongoDB 索引和排序
  9. php csrf jsonp,读取型CSRF(JSONP劫持、CORS跨域资源读取、Flash跨域劫持)
  10. 【转】SqlLite .Net 4.0 System.IO.FileLoadException”类型的未经处理的异常出现在XXX
  11. 三种方法打印 main函数的返回地址的值(old EIP)(用途,你懂得!)
  12. 网易:Flink + Iceberg 数据湖探索与实践
  13. 房产中介管理系统,房产中介预约看房系统,看房预约系统毕设作品
  14. bmp图片格式转化为jpg
  15. opencv-3.0.0-beta和opencv2版本的区别
  16. 五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(四)算杀模块的简单实现
  17. 5-29 止跌上涨中,关注明后两天能否创新高点
  18. 计算机网络(中科大郑烇)第二章笔记
  19. java-天气预报的接口
  20. Windows 2008R2 +MDT2013+WDS(1)

热门文章

  1. SCI论文编辑教你如何准备SCI论文和写作 [转]
  2. JavaScript面向对象:面向对象案例
  3. Windows CreateFont:创建自己的字体
  4. mysql统计一年中每周的数据,week(时间)和week(时间,1)不同
  5. Unity-业余2D游戏制作笔记02-Dialogue System for Unity使用
  6. C语言中静态变量的概念和用法
  7. 2023西北大学计算机考研信息汇总
  8. word html密码,Word文档加密打不开怎么办?Word解除密码的三种解决办法
  9. SQL查询语句(从单表到多表、从简单到复杂)
  10. ZGC都出来了,你还不懂G1?