天天看點

巴比博弈

巴比博弈

參考:​​博弈論及算法實作​​

隻有一堆​

​n​

​​個物品,兩個人從輪流中取出​

​(1~m)​

​個,最後取光者勝。

考慮到 若​

​n=m+1​

​那麼 第一個人不論如何取都不能取勝。

進一步我們發現 若 ​

​n=k(m+1)+r​

​​,先取者拿走​

​r​

​​個,那麼後者再拿​

​(1~m)​

​個

​n=(k-1)*(m+1)+r​

​​; 先取者再拿走​

​r​

​​個 最後總能造成 剩下​

​n=m+1​

​的局面。

是以,此時先手有必赢政策。

相對應的,若​

​n=k*(m+1)​

​那麼先取者必輸。

是以我們可以寫出對應的程式(預設​

​n m​

​都大于0)

代碼:

bool Bash_Game(int n,int m)//是否先手有必赢政策
{
    if (n%(m+1)!=0) return true;
    return false;
}