取石子游戏

来源:百度知道 编辑:UC知道 时间:2024/05/14 15:13:46
(取石子游戏) 现有 5 堆石子,石子数依次为 3,5,7,19,50,甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论 乙怎样取,甲只要不失误,都能获胜)?
这是答案:
有获胜策略,第1次在第5堆中取32 颗石子....BT啊!(答案只说第一次取就没了)
晕,我看不明白,哪位大牛教教我!分析一下!听说是用什么平均数原理?

这是数论中的最优策略问题,没有平均数原理。
我好好想想再给你答案。
要上班了,下班继续思考……(时间不多,才回复,见谅)
1. 从50中取走32粒剩余18粒是正确的。
2. 算法:从其中一堆中取n个,使得剩余的所有数目正好是“必负局(此时先取必输的局面)”。
3. 所谓“必负局”是指把剩余的每一堆的数目都转化成二进制的数,然后把它们相加,规定做不进位的加法(也就是异或运算),即0+0=0,1+0=0,0+1=1,1+1=0(不进位),如果所得和是0(多个0),那么此种局势称为“必负局”。
4. “必负局”原理:一个“必负局”,一次改动任何一个数,都将不再是“必负局”,同时,任何一个“非必负局”,通过正确地减少某个数,一定能变成“必负局”,并且这种操作是唯一的。设想现在是“必负局”,假如你先取,势必把其中的某个数的1改成了0,0改成了1,一定不再是“必负局”了,而我一定可以在把它变会“必负局”。其实这样的局势,相当于偶数,你取了,必定有对应我取的,所以我一定拿到最后一个。简单的想,考虑只有两堆,那么如果原来不相等,那就是“非必负局”,先取者有必胜方式,只要取多的一堆使得两堆相等,之后你取几个,我就从另一堆取几个。
5. 应用:(也许格式会改变)
19 010011
7 000111
5 000101
3 000011
010010 (18)10
也就是,还要18才能变成“必负局”,所以50-18=32
所以第1次只能在第5堆石子中取32粒,使得取出32粒后为“必负局”,即异或运算结果为0。