Chomp!游戏

来源:互联网 发布:ac100网络隔离 编辑:程序博客网 时间:2024/06/05 19:53

这是什么游戏呢?举个例子先。
有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格。拿到左下角的格子(1,1)者输。那么谁会赢呢?
乍一看不太好解。其实答案很简单,除了n=m=1的情况,先手总能赢。
下面我们用反证法证明。
若后手能赢,则后手一定有必胜策略,也就是说后手取走了某个方格后先手必败。而事实上如果这个方格存在,先手完全可以先取走,那么后手必败,与假设矛盾。所以后手必败。注意这只是针对n*m>1的情况,如果n=m=1则先手必败,因为先手只能取那唯一的格子。
下面再举个例子。
有n张纸片摆在你面前,第i张纸片上写着数字i。每次可以取走一张纸片和数字是该纸片因数的纸片。问谁会赢?
和上面的例子差不多,只要n不为1,总是先手赢。
然后还有一个稍微难些的例子。
现在有一棵含n个节点的有根树,根节点是1,每个点初始时都是白色。每次可以把任意一个白色节点到根节点经过的所有的点(包括该节点)变成黑色。谁最后把整棵树染黑了,谁就输了。
不难看出,只要n不为1,还是先手赢。若后手选择一个节点后必胜,那先手完全可以“先下手为强”,则先手胜利。发现了吗?其实这棵树长什么样根本不用管,只要判断n就可以了。

3 0
原创粉丝点击