今天看到别人的面试算法题,求找出十包粉末中两包蓝色粉末的最短时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今天看到别人的面试算法题,求找出十包粉末中两包蓝色粉末的最短时间相关的知识,希望对你有一定的参考价值。
题目:有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;
方法五:时间差
通过间隔段时间投放不同的粉末,观察水体变蓝的时间来判断和确认蓝色粉末。
方法六:.......
以上是关于今天看到别人的面试算法题,求找出十包粉末中两包蓝色粉末的最短时间的主要内容,如果未能解决你的问题,请参考以下文章