|
以文本方式查看主题
- 北京一零一中学2003届高三8班论坛 (http://www.bj101zx.com/cgi-bin/lb5000/leobbs.cgi) |
|
-- 作者: 彦清风
乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定。例如图1所示的初始局面:共n=3堆,其中第一堆的石子数a1=3,第二堆石子数a2=3,第三堆石子数a3=1。两人轮流按下列规则取走一些石子,游戏的规则如下: 解答 对于游戏A来说,任意的一个初始局面S=(a1, a2, …, an),我们把这里的ai都看成是二进制数。令#S=a1异或 a2异或 … 异或 an。若#S≠0,则先行者(甲)有必胜策略;否则#S=0,这时后行者(乙)有必胜策略。 这个异或运算我一直没有弄很明白,这里为什么要用这种逻辑运算?
-- 作者: jqjiang
设 #S = a1 XOR a2 XOR … XOR an
-- 作者: 彦清风 异或运算怎么进行?1,1或者0,0,异或结果是0,那多个1,或者0,1相间怎么运算?比如1,0,1,1,0,0,1异或结果是什么?
-- 作者: jqjiang
两个算完后的结果再与第三个运算,依此类推。
-- 作者: jqjiang
而且它还满足交换律、结合律什么的。
-- 作者: 彦清风
[quote][b]下面引用由[u]jqjiang[/u]在 [i]2003/10/06 09:28am[/i] 发表的内容:[/b] [/quote]
-- 作者: jqjiang
a1,a2,...,an 中,ai 是其中一个数,其他数通过异或运算后结果设为 aj,
-- 作者: 彦清风
大概明白了,也就是说,先手必胜的前提是:N堆石头异或值为0以外任意数;
-- 作者: jqjiang
嗯,没错 :)
-- 作者: 彦清风 呵呵,谢谢江老师
-- 作者: 彦清风 对了,可是为什么要使用异或运算呢?
-- 作者: jqjiang
这种问题,估计很多都是后来才发现的,发现正好与某个运算性质相吻合 :)
|