这个是今天去广州广像信息科技有限公司面试测试时候碰到的题.大意是:甲乙丙丁4个人要黑夜过桥.甲过桥1分钟,乙2分钟,丙5分钟,丁10分钟.过桥时候只有一个手电筒用来照着路,且一次只能有两个人同时过桥.而且手电筒不能扔回来,只能由过了桥的人带回来.题目的要求是要在17分钟内让4个人过桥.
刚开始我的想法是由甲乙两个过桥,然后由甲回来每次带一个人过去,但这样算下来就要19分钟.17分钟就无法完成.
因为我的思路是过去的次数是确定的.因为每次就两个人过去,总共要过4次桥,所以要省时间的话就只能尽量在从桥那边返回送手电筒时候省时间了.所以最好的结果就是由甲来往返于桥之间.
实际上,这种问题是属于统筹上的,不应该按我先前的想法那么算的.统筹算法里面的一个思想是求整体结果最优,而不是局部最优.因为在通常情况下,受到约束时,局部最优不一定能使得整体最优.
这个过桥问题的答案是:
甲乙同过(1 AND 2) 需2分钟;
甲返回 需1分钟;
丙丁同过(5 AND 10) 需10分钟;
乙返回 需2分钟;
甲乙同过(1AND 2) 需2分钟。
共17分钟