趣味数学题+++++++++游戏+++++++++
趣味数学题+++++++++游戏+++++++++
博弈题,只有两种情况,先取必胜或者后取必胜,只要笔的总数是奇数,最后肯定有一个人是奇数,另一个人是偶数,以下讨论中,笔的总数为奇数。
这里影响胜负的因素只有两个,一是当前桌子上还剩了多少只笔,二是自己手中拿的笔的数量的奇偶性。
如果当前桌子上还剩a只笔,自己手中拿的笔的数量的奇偶性为b(偶数时b=0,奇数时b=1),若先取必胜,记X(a, b)=1,否则,记X(a, b)=0。
显然有,
X(1, 0) = 1 (还剩1只笔,手中有偶数只,取走这支笔就获胜了,必胜)
X(1, 1) = 0 (还剩1只笔,手中有奇数只,只能取走这支笔,必输)
X(2, 0) = 1
X(2, 1) = 1
X(3, 0) = 1
X(3, 1) = 1
X(4, 0) = 1
X(4, 1) = 0
我们来看看当a>3的时候,X(a, b)的递推情况,由于笔的总数是奇数,
若a为偶数,此时对方手中拿的笔的数量的奇偶性是1-b,
此时,若X(a-3, 1-b)、X(a-2, 1-b)、X(a-1, 1-b)都等于1,则X(a, b)=0,否则X(a, b)=1
若a为奇数,此时对方手中拿的笔的数量的奇偶性是b,
此时,若X(a-3, b)、X(a-2, b)、X(a-1, b)都等于1,则X(a, b)=0,否则X(a, b)=1
有了递推关系,我们可以用程序来求一些,看看规律:
X(1, 1) = 0, X(2, 1) = 1, X(3, 1) = 1 => X(4, 0) = 1
X(1, 0) = 1, X(2, 0) = 1, X(3, 0) = 1 => X(4, 1) = 0
X(2, 0) = 1, X(3, 0) = 1, X(4, 0) = 1 => X(5, 0) = 0
X(2, 1) = 1, X(3, 1) = 1, X(4, 1) = 0 => X(5, 1) = 1
X(3, 1) = 1, X(4, 1) = 0, X(5, 1) = 1 => X(6, 0) = 1
X(3, 0) = 1, X(4, 0) = 1, X(5, 0) = 0 => X(6, 1) = 1
X(4, 0) = 1, X(5, 0) = 0, X(6, 0) = 1 => X(7, 0) = 1
X(4, 1) = 0, X(5, 1) = 1, X(6, 1) = 1 => X(7, 1) = 1
X(5, 1) = 1, X(6, 1) = 1, X(7, 1) = 1 => X(8, 0) = 0
X(5, 0) = 0, X(6, 0) = 1, X(7, 0) = 1 => X(8, 1) = 1
X(6, 0) = 1, X(7, 0) = 1, X(8, 0) = 0 => X(9, 0) = 1
X(6, 1) = 1, X(7, 1) = 1, X(8, 1) = 1 => X(9, 1) = 0
X(7, 1) = 1, X(8, 1) = 1, X(9, 1) = 0 => X(10, 0) = 1
X(7, 0) = 1, X(8, 0) = 0, X(9, 0) = 1 => X(10, 1) = 1
X(8, 0) = 0, X(9, 0) = 1, X(10, 0) = 1 => X(11, 0) = 1
X(8, 1) = 1, X(9, 1) = 0, X(10, 1) = 1 => X(11, 1) = 1
X(9, 1) = 0, X(10, 1) = 1, X(11, 1) = 1 => X(12, 0) = 1
X(9, 0) = 1, X(10, 0) = 1, X(11, 0) = 1 => X(12, 1) = 0
X(10, 0) = 1, X(11, 0) = 1, X(12, 0) = 1 => X(13, 0) = 0
X(10, 1) = 1, X(11, 1) = 1, X(12, 1) = 0 => X(13, 1) = 1
X(11, 1) = 1, X(12, 1) = 0, X(13, 1) = 1 => X(14, 0) = 1
X(11, 0) = 1, X(12, 0) = 1, X(13, 0) = 0 => X(14, 1) = 1
X(12, 0) = 1, X(13, 0) = 0, X(14, 0) = 1 => X(15, 0) = 1
X(12, 1) = 0, X(13, 1) = 1, X(14, 1) = 1 => X(15, 1) = 1
X(15, 0) = 1,所以先取必胜。
找每一行让对方必败的策略,设取Y(a, b)只笔,找每一行最后一个数为1时,前3个数哪个为0,写程序算出取的支数。
Y(1, 0) = 1
Y(2, 0) = 1
Y(2, 1) = 2
Y(3, 0) = 3
Y(3, 1) = 2
Y(4, 0) = 3
Y(5, 1) = 1
Y(6, 0) = 2
Y(6, 1) = 1
Y(7, 0) = 2
Y(7, 1) = 3
Y(8, 1) = 3
Y(9, 0) = 1
Y(10, 0) = 1
Y(10, 1) = 2
Y(11, 0) = 3
Y(11, 1) = 2
Y(12, 0) = 3
Y(13, 1) = 1
Y(14, 0) = 2
Y(14, 1) = 1
Y(15, 0) = 2
Y(15, 1) = 3
按照这个策略,先取的必胜,
例如
Y(15, 0) = 2,表示桌上还剩15只笔,自己手中有偶数只笔,也就是最开始的时候,应该取2只。
Y(8, 1) = 3,表示桌上还剩8只笔,自己手中有奇数只笔的时候,应该取3只。
大家能看出这个策略有什么规律吗?我没看出来。
方案太多了.
如果你是甲方.
例1:(留最后四个要你先拿.你拿一个最后三个给乙,所以你拿的是奇数赢了)剩十一个你要观察乙的行动拿设计到让他抓完最后三个两个或一个,然后你拿最后四个中的一个!
不论怎样,一定要对手拿最后一次的时候是4,这样他拿什么我们必胜。但是我们给对手剩下5,6的话我们就惨了,所以我们倒数第二次取一定要保证取的时候还有7个(有5,6更好,直接取到4)。这样就必须保证对手取后应为9,10,11,他给我们留下8我们就惨了,这样我们就可以给他留下8了,这样一来你开始看他怎么取,控制他取后剩下9,10,11,就好了,取三个,应该没问题。
相关内容