簡單博弈之巴什博弈

2021-08-20 16:00:03 字數 602 閱讀 5741

例題:

guns和roses是兩個好朋友,這一天他們比賽吃葡萄。假定他們有ans顆葡萄。

在比賽之前他們會首先確定每次吃葡萄的數量的最大值為s,和ans的具體值。

兩個人輪流吃葡萄,每次最多吃s顆,不能不吃。(即假定每次吃m顆葡萄,則 1<=m<=s)

遊戲規定在誰吃完葡萄後,他們兩個人所吃的葡萄總和等於ans,誰就獲勝。

假定他們兩人足夠聰明,在吃葡萄的過程中都不會使值大於ans。

現在規定guns先手,請你幫助他計算為了確保最終取得勝利,他第一次應該吃多少顆葡萄?

若第一次無論吃多少顆葡萄,最終都無法取得勝利,請你輸出 -1 。

解題思路:

就是遞推,如果先手想要獲得勝利,那麼就需要在先手倒數第二次取的時候,還剩下(1+s)顆,這樣的話,無論後面的人如何取,都一定輸了。分析這個樣例 ans=9,s=4.倒著分析,如果要想達到還剩4+1顆時,也就是第一次先手拿了四顆,這樣的話,無論後手拿多少顆,剩下的顆數一定小於5,那麼先手穩贏。 

**:#include

using namespace std;

int main()

else

cout<}return 0;

}

博弈之 巴什博弈

博弈乍看都是乙個高大上的詞語 巴什博弈的主要內容 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。其中它強調的是只有一堆物品 如果n m個 那麼先拿的一定會贏,如果n m 1 個,那麼第乙個人無論拿多少,第二個人一定會最後取光,如果n m 1 n 那麼只...

博弈 巴什博弈

只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 r s,r為任意自然數,s m 那麼先取...

數論 博弈 巴什博弈 BAshGame

巴什博弈 一堆物品有n個,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。當石子有1 m個時,毫無疑問,先手必勝 當石子有m 1個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗 當石子有m 2 2m時,先手可以拿走幾個,剩下m 1個,先手必勝 我們不難發現,面臨m 1個石...