现在的位置: 首页 > 综合 > 正文

士兵上楼梯问题(守恒思想)

2017年12月23日 ⁄ 综合 ⁄ 共 541字 ⁄ 字号 评论关闭

总共有n级台阶,一些台阶上有若干士兵。把所有的士兵分为两组,然后敌人告诉你哪一组留下哪一组被消灭。接着那些留下的士兵上一个台阶。

然后你再把剩下的士兵重新分组,敌人再次选择一组留下,剩余的再上一级。

如此反复,如果最后有一个士兵等等,也就是踏上第N级台阶,你就赢了,否则输了。

现在给定n级台阶上的士兵分别状况,问,你能否有必胜的策略?

 

首先注意如果我们是敌人,面对两组不同人数,我们会消灭哪一组,这跟每组人数多寡是没有联系的。比如100在第一层,1个在n-1层,我们必须选择留下100个那组,对吧。

现在我们这么想:如果两个士兵站在第i层,分属两组,现在消灭一组,剩余一个上到第i+1层,是不是有  2 * i = 1* i+1 这样的等价关系呢?

那么我们给每层台阶赋以一个权值:  wi = 2^i 次方,那么结束状态有一个士兵在第n层拥有的权值和就是  2^n 次方。

我们只有一种操作,即留下一组,消灭一组,如果我们能让留下的一组的权值保持不变(因为要上一级)的话,那不管敌人怎么选择,因为每次的权值和不变,最后一定能有士兵到达第n层。当然如果初始状态下 所有士兵的权值和小于 2^n次方,那无论如何都赢不了,这个很明显。

 

所以我们的策略就是每次分组,都按权值和来分,尽量均匀分为两个组,这样就可以保证最后一定赢。

【上篇】
【下篇】

抱歉!评论已关闭.