问题重述:
已知n个棋子在一个一维棋盘上的摆放位置,两个人轮流走棋,每次只能把一个棋子往左移任意距离,但是不能越过前面的棋子和第一个格子。直到轮到某人时无棋可走,则另一个人获胜。
分析:
把n个棋子从右往左两两组成一对。若多出一个棋子,则假设0位置有颗棋子,与第一个棋子组成一对。每个人的目标都是通过走棋之后使得每对棋子内的间距为0 :假设A走棋之后,达到了这样的状态,那么B就只能移动每对棋子中左边的棋子,然后A就移动该对棋子中右边的棋子,使得这对棋子内间距保持0,那么A必将获胜。因此可以想象,相邻棋子对间的间距对胜负并不影响。
首先计算出每对棋子间的间距,那么每次走棋的结果仅仅是减少某个间距的值。(事实上,问题已经转化为取石子问题,可以采用非常简单的办法求解,但是解题时并不了解取石子问题。)同样从后往前两两组成一对,若多出一个间距,则与0组成一对。
原文地址:http://www.cnblogs.com/junxie/p/3866605.html