当前位置: 首页 > news >正文

今天看到别人的面试算法题,求找出十包粉末中两包蓝色粉末的最短时间

题目:有4个杯子,10包粉末,其中有2包溶于水变蓝,其余无色,粉末溶于水2min才能显现颜色。求找出两包蓝色粉末的最短时间。假设水和粉末用不完。

方法一:

  第一趟:[12,34,56,78]  

    每个杯子分别放两包加水融化,剩下两包不管。可能的情况:

  (1)0个杯子变色,说明剩下两包就是蓝粉末

  (2)1个杯子变色,则蓝粉末在这个杯子两包和未融化的两包其中两包,第二趟四包融化一定可以找到

  (3)2个杯子变色,则在这两个杯子的四包粉末中,第二趟可找到。

   时间均值:E = 2*1/45 + 4*44/45 = 178/45;

方法二:

  第一趟:[123;456;78;910]

 (1)1个杯子变蓝,如果是3或4号杯子蓝,则就是放入该杯子中的2种粉末,否则在变蓝的杯子的3种粉末中,局部时间均值E1 = 2*2/45 + 4*6/45 = 26/45

 (2)2个杯子变蓝,

    -如果是前两个杯子变蓝,第二趟放置[14;25;36;15],分析关系:杯子14有联系,24有联系。

         a. 杯1变色而杯4不变则

    -如果是前面两个杯子有一个变蓝,后两个杯子有一个变蓝,则5种粉末随机取四种放在四个杯子中看现象。

    -如果后两个杯子变蓝,则4种粉末分别放在四个杯子中看现象就可以。

时间均值:E = 2*2/45 + 4*43/45 = 176/45;

方法三:

第一趟:[1234; 2567; 3689; 47910] 

  每个杯子只有一个独立的,每杯都与另外三杯有一个共同粉末(而且一包粉最多只能放在俩杯里),放置方法:1234放在杯子1,234分别放在杯234,567放在杯子2,67分别放杯子34...

  (1)不可能只有一个杯子蓝,除了1 10,每包粉末都放在两个杯子里。

  (2)两个杯子蓝: 则只能是这两个杯子共有而其他两个杯子无联系的。第一个蓝杯中有两包ab与两个非蓝杯有联系,另一蓝杯中有两包cd与两个非蓝杯有关系。abcd排除后剩下3包粉末。例如杯子12_[1234;2567]蓝,则可能是12,15,25, 局部时间均值E1 = 4*18/45 = 72/45;

  (3)三个杯子蓝,则可以排除非蓝杯的四种粉末剩下六种可能;至少有一包是这三个蓝杯中两个杯子的共同颜色,例如杯子123_[1234;2567;3689]蓝,则有可能是16,23,26,28,35,36,局部时间均值E2 = 4*24/45 = 96/45;

  (4)四个杯子蓝,则蓝色的粉末放在两个杯子中,且两包蓝色粉末没放在一起;则只能是29,37,46三种组合之一, 局部时间均值E3 = 4*3/45 = 12/45.

   时间均值:E = 4;

方法四:枚举

  即每种粉末都放入杯中溶解一次,直到找到两包蓝色粉末,

  (1)仅一趟就成功找到两包蓝色粉末, 局部时间均值E1 = 2*6/45 = 12/45;

      (2)两趟就成功找到两包蓝色粉末, 局部时间均值E2 = 4*23/45 = 92/45;

  (3)三趟才成功找到两包蓝色粉末, 局部时间均值E3 = 6*16/45 = 96/45;

  时间均值:E = 200/45;

方法五:时间差

  通过间隔段时间投放不同的粉末,观察水体变蓝的时间来判断和确认蓝色粉末。

方法六:.......

转载于:https://www.cnblogs.com/mahaikai/p/5222892.html

相关文章:

  • 二分法的学习
  • 手机移动端WEB资源整合
  • 保温饭盒毕业设计程序
  • 诡异的尺寸
  • 修改PHP上传文件大小限制的方法
  • [转]xml文件中的转义字符
  • FFmpeg编译安装
  • CSS居中的方法总结
  • docker安装caffe
  • leveldb性能分析
  • postgresql利用pg_upgrade升级数据库(从8.4升级到9.5)
  • 吸血鬼数字
  • DropdownList
  • Linq 内联左联等
  • 初探博客园
  • [PHP内核探索]PHP中的哈希表
  • 【node学习】协程
  • CSS3 变换
  • CSS相对定位
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Lsb图片隐写
  • Redis在Web项目中的应用与实践
  • SpiderData 2019年2月25日 DApp数据排行榜
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue--数据传输
  • 关于Flux,Vuex,Redux的思考
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前端面试题总结
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 什么软件可以剪辑音乐?
  • 什么是Javascript函数节流?
  • 使用Gradle第一次构建Java程序
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​虚拟化系列介绍(十)
  • #微信小程序:微信小程序常见的配置传值
  • (pojstep1.1.2)2654(直叙式模拟)
  • (补)B+树一些思想
  • (二)linux使用docker容器运行mysql
  • (六)c52学习之旅-独立按键
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Sublime Text3配置Lua运行环境
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 分布式技术比较
  • .NET下ASPX编程的几个小问题
  • /proc/vmstat 详解
  • @Conditional注解详解
  • @GlobalLock注解作用与原理解析
  • [ linux ] linux 命令英文全称及解释
  • [.net] 如何在mail的加入正文显示图片
  • [17]JAVAEE-HTTP协议
  • [AIGC] Spring Interceptor 拦截器详解