关于编程之美一个房间里面三盏灯的问题

                这几天在看编程之美这本书。这里面提到了一个非常有意思的问题。”房间里面有三盏灯,屋外有三个开关,分别控制三盏灯,只有进入房间,才能看到哪一个电灯是亮的,请问如何进入房间一次,就能指明哪一个开关控制哪一个灯?”我想了一个解法,未必正确,各位浏览的博友可以思考一下。如果我的答案有误,欢迎批评指正,如果其他解法,欢迎共同讨论,最好把自己的思考过程写出来,大家共同进步。

    我的思考过程是这样的,一般要想知道哪个开关控制哪个灯,观察的变量是灯亮不亮。但是在这道题里面有了限制,因为要辨别的是三盏灯,而且只能进入房间一次。如果只有灯亮不亮这个变量去判断哪个开关控制哪盏灯,显然只能知道三个开关中的一个控制哪盏灯,剩下的两盏无法判别,因为他们同暗或同亮。原本我的思考方向是,人在做这件事的时候只有三个动作,第一个,在进入房间之前可以去操作开关,第二个,进入房间之后可以观察灯或者做其他一些小动作,第三个,出来后可以操作开关。显然出来之后无论如何操作开关,都无法观察灯的状态,所以解题的关键应该在第一和第二步。我之前都是在第二步里面思考。想过在第一步里面开两个开关,关掉一个开关,进入房间之后知道一个开关控制哪盏灯,然后对亮着的两盏灯进行操作,可以影响到开关的状态。思考很久,不知道怎么进行,房间里面的灯如何才能影响外面开关的状态呢?后面我才想到,我的思考重心错了,我应该把重点放在第一步。而且不能只以一个变量去解决这个问题。因为这里面有三盏灯,就像数学里面的问题。有两个未知数,自然需要两个变量去解方程。有了这个思路,答案就呼之欲出了,灯除了发光,还能发热,节能灯之类的,在灯关掉之后,还会有一点点荧光,这些都是解题的关键。所以我的答案是,刚开始的时候,打开开关1,等十分钟,关掉,打开开关2,保持开关3的关闭状态。进入房间,亮着的灯对应开关2,暗着的灯里面,有微微荧光或者灯泡发热的灯对应开关1,另外一盏对应开关3。至此,就是我的全部思考过程和最终答案。大概历时一个钟。

    思考的过程是有趣的。欢迎大家共同讨论。互相关注,一起交流,共同进步。

    原文作者:javacankillyou
    原文地址: https://blog.csdn.net/javacankillyou/article/details/44151651
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞