首页 > 代码库 > 房间里有三盏灯问题解决方案

房间里有三盏灯问题解决方案

http://blog.csdn.net/pipisorry/article/details/36014835

question:房间里有三盏灯,屋外有三个开关,分别控制这三盏灯,只有进入房间,才能看到哪一个电灯是亮的。请问如何之进入房间一次,就能指明哪一个开关控制哪一个灯?

小解:

三个灯: 打开两个灯, 过一会关闭一个. 进去看亮着的, 不亮但是发热的,不亮也不发热的 .区别出来. 

四个灯: 打开两个灯, 过一会关闭一个, 然后打开一个新的灯, 不亮但是发热的, 亮但是 不发热的, 亮而且发热的, 不亮也不发热的. 区别出来.


详解:

这里有三个未知数,对应亮与不亮只有两个已知值,不能解这个问题。还需引进别的属性。

(1)引进开灯时间长短热的属性

A B C三盏灯 A开时间长一些然后关掉 B开时间短一些关掉 C不开 根据灯热的三个程度即可解决这个问题 

A B C三盏灯 先把A长时间开一会  然后开B  C不开  根据A是热的 B是亮的 C是不亮的 也可解决这个问题 

(2)扩展亮这个属性

A B C三盏灯 进入房间给A灯接入电阻,(三个灯应该不是串联的,如果是串联的话,设三个开关就没有意义了) 开B灯 ,根据A灯不是很亮 B灯很亮 C灯不亮解决这个问题 

A B C三盏灯 给三盏灯分布接入大小不等的电阻   根据灯的亮暗程度也可解决这个问题 

(3)引入灯闪烁这个属性

根据闪烁的快慢。  

总结:不能只有0和1的这两个概念,要有(0,1)这样的区间概念。




偏解:
三盏灯为恒温灯时:
把一个房间的灯拆掉一个,并在剩下两个灯泡之一蒙上有色纸(使两盏灯发出的光线不同)房门打开,窗帘不拉(应该可以从有开关的房间看到等是否亮),则
1、逐个试开关,发现灯没亮的就是控制拆掉那个的开关
2、根据灯光颜色判断开关

1.准备一个整流二极管。
2.进入带开关的房间,将开关编号为1,2,3号
3.设置1号开启,2号关闭,3号开关打开盖,将整流二极管串入回路,再开启。
4.到另一间房间,看见灯亮的是1号,不亮的是2号,闪烁亮的是3号。

ref:
http://blog.csdn.net/pipisorry/article/details/36014835
http://blog.csdn.net/kupepoem/article/details/10752333
75道逻辑思维题以及其解法:
http://www.360doc.com/content/11/0103/13/4812461_83585246.shtml
http://wenku.baidu.com/view/04f8c6ed6294dd88d0d26b34.html