药物传递

来自计算思维百科
跳转至: 导航搜索
药物传递.jpg

A、B两人分别在两座岛上。B生病了,A有B所需的药;C有一艘小船和一个可以上锁的箱子。C愿意在A、B之间运东西,但是东西只能放在箱子里,而且箱子必须上锁,如果箱子没有上锁,不管箱子里有什么,C会偷走箱子里的东西。如果A、B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把药物传递给B?

解决方案

从题目中我们可以知道这么几个条件:

a. A、B被分隔在两边;

b. A有药,要给B;

c. C有小船和可以上锁的箱子;

d. A、B各有一个锁和可以开自己锁的钥匙

我们要做的是利用C的船运输装在箱子里的药,并且箱子被A或B的锁锁上了,最后要让B得到药。

题目没有限制C在A、B之间来回几次,如果顺着思路去想,很容易乱。因为最终的结果我们很清楚,就是B要利用自己的锁打开箱子取出A放进去的药,我们不妨逆着想,从结果出发往前推理。

B要得到A的药物只能是A递过去一个有着B锁锁着的箱子,那么A怎么得到B锁呢?只能是利用C的船将B的锁送去。

但是B不能先把箱子锁住,因为B如果把箱子锁住的话,A就不能把药物放到箱子里去了。所以A需要先把药物放到箱子里面去,所以办法就想到了:

A先把药放到箱子里去,上锁,送到B那里;B再锁上一个锁,送到A那里;A把自己的箱子解锁,再送回B,这样药物就安全到达B了。

运用的计算思维

这个问题从正面想可能有点难,如果A把箱子上锁给B的话,B是开不了的。那么不妨逆向想一下:将A怎么把药物传递给B转化为B怎么得到A的药物。这体现的转化的计算思维。

参考文献

百度文库第10题