Wythoff's game

威佐夫博弈,是博弈论的一种基本模型,两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜利。

首先对于(0 , 0)那么先手是必败的

其次我们看对于(1,2)枚举了所有情况发现无论怎样,先手必败

而对于还有先手必败的情况,是(3,5)

(4,7)

(6,10)

(8,13)..........

可以选择枚举一下就会知道了

然而发现它们的差值竟然神奇地是:1,2,3,4,5……n

同时,我们把差值与第一堆石子的个数比较,竟然接近于了1.618 = 1 + 0.618 !

所以对于先手必败的情况,我们就有情况进行讨论了

首先1.618 = (sqrt(5)+1)/2

如果差值与1.618的积不为第一堆的石子个数,那么先手必胜,否则先手必败

注意精度问题

double n1 = min( n , m );
            double m1 = max( n , m );
            n = min( n , m );
            if( (int)(( m1 - n1 ) * temp) == n ){
                printf( "先手必败\n" );
            }
            else
                printf( "先手必胜\n" );

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值