码迷,mamicode.com
首页 > 其他好文 > 详细

威佐夫博弈

时间:2019-04-13 15:14:55      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:mes   turn   col   swap   hellip   ace   wap   博弈   size   

有两堆各若干个物品,两个人轮流从任意一堆中取出至少一个或者同时从两堆中取出同样多的物品,规定每次至少取一个,至多不限,最后取光者胜利。

 

我们用(ai,bi)表示当前局势,当前局势为以下情况者(证明略),先手必输:

(0,0)

(1,2)

(3,5)

(4,7)

(6,10)

(8,13)

(9,15)

(11,18)

 ……

(an,bn

 

结论:

  an=未在前面出现过的最小的自然数=(int)((bn-an)*1.618)。

 

using namespace std;
main()
{
    int a,b;
    scanf("%lld%lld",&a,&b);
    if(a>b) swap(a,b);
    int temp=abs(a-b);
    int ans=temp*(1.0+sqrt(5.0))/2.0;
    if(ans==a) printf("Second");
    else       printf("First");
    return 0;
}

 

威佐夫博弈

标签:mes   turn   col   swap   hellip   ace   wap   博弈   size   

原文地址:https://www.cnblogs.com/LMIx/p/10700396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!