开关和灯泡问题

时间:2021-07-06 11:54:42

在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分哪个开关控制哪一盏灯?

解析:

首先想到的就是通过打开不同的开关,进去后看灯是否亮来找出对应关系。可能打开的开关数量只有0,1,2,3共四种情况,没有一种情况能解决这个问题。所以必须找到其它的信号。

鉴于灯泡亮一段时间后会发热,我们可以使用灯的热度作为一个信号。这样我们就有了

1 - 热且亮

2 - 热不亮

3 - 亮不热

4 - 不热不亮

四种状态,足以用来区分三只灯泡了。

这里可以理解成一个编码问题,灯泡的状态作为编码空间(有4个状态,即4进制),进屋的次数作为编码位数。

所有答案是:

设三个开关是1、2、3。打开开关1等半个小时,然后关上开关1并打开开关2。
进房后去摸灯泡,热的是开关1对应的灯泡;亮的是开关2对应的灯泡;不亮不热的是开关3对应的灯泡。

推广1:

在房里有四盏灯,房外有四个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分哪个开关控制哪一盏灯?

解析:根据灯泡有4个状态,1次进房间正好可以区分4个灯泡,

答案:设四个开关是1、2、3、4,首先打开开关1和2半个小时,然后关闭2,打开3进房间,查看灯泡状态,热且亮的对应开关1,热不亮的对应开关2,亮不热的对应开关3,不热不亮的对应开关4;


推广2:

在房里有n盏灯,房外有n个开关,在房外看不见房内,且进门后只能观察灯的亮度的情况下,你需要进门多少次才能区分哪个开关控制哪一盏灯?

解析:根据分析,灯泡的状态作为编码空间(有4个状态,即4进制),进屋的次数作为编码位数,这是一个4进制的表示问题,问题即转化为:n表示成4进制有几位?

答案为: log4(n).


3. 在房里有n盏灯,房外有n个开关,每个开关有三种状态(开,关,半开(亮度为开的一半))在房外看不见房内,且进门后只能观察等的亮度的情况下,你需要进门多少次才能区分哪个开关控制哪一盏灯?

解析:现在一个开关可以让灯泡产生出6中状态:热切亮,热且半亮,亮不热,半亮不热,热不亮,不热不亮;即变为一个6进制问题:n表示成6进制有几位?

答案为: log6(n).