博弈論中的巴什博奕

2022-05-13 10:45:24 字數 1597 閱讀 3005

巴什博奕(bash game):

只有一堆n個物品,兩個人輪流從這堆物品中取物,規

定每次至少取乙個,最多取m個。最後取光者得勝。

顯然,如果n=m+1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則:如果n=(m+1)*r+s,(r為任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。

這個遊戲還可以有一種變相的玩法:兩個人輪流報數,每次至少報乙個,最多報十

個,誰能報到100者勝。

裸的巴什博奕:

#include#includeusing namespace std;

int main()

return 0;

}

奇偶的博弈問題(簡單題)

#include#include#includeusing namespace std;

int main()

{ int n,m;

while(cin>>n>>m)

{if(n==0&&m==0)

break;

else

{if(n*m%2==1)

cout<<"what a pity!"<

巴什博奕的變形:

#include#include#includeusing namespace std;

int main()

{ int n,m;

while(cin>>m>>n)

{if(m%(n+1)==0)

cout<<"none"《巴什博奕水題

#include#include#includeusing namespace std;

int main()

{ int t;

cin>>t;

while(t--)

{ int n,m;

cin>>n>>m;

if(n巴士博弈的變形題(好題)

這也是一道巴什博弈:

這題如果你是先手,考慮你的必勝態。注意,因為任何正整數都能寫成若干個2的整數次方冪之和。由於規定只能取2的某個整數次方冪,只要你留給對手的牌數為3的倍數時,那麼你就必贏,因為留下3的倍數時,對手有兩種情況:

1:如果輪到對方抓牌時只剩3張牌,對方要麼取1張,要麼取2張,剩下的你全取走,win! 

2:如果輪到對方抓牌時還剩3*k張牌,對手不管取多少,剩下的牌數是3*x+1或者3*x+2。輪到你時,你又可以構造乙個3的倍數。 所以無論哪種情況,當你留給對手為3*k的時候,你是必勝的。

題目說kiki先抓牌,那麼當牌數為3的倍數時,kiki就輸了。否則kiki就能利用先手優勢將留給對方的牌數變成3的倍數,就必勝。

#include#include#includeusing namespace std;

int main()

{ int n;

while(cin>>n)

{if(n%3==0)

cout<<"cici"<

博弈論 巴什博奕

巴什博弈其實就是取石子遊戲 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。分析 這是乙個典型的博弈論問題。其中有兩個局中人,分別為a和b,並假設a先取,b後取。每次取的時候他們都有自己的決策,即每次取的個數為 1 m 我們舉個特例,如果n m 1,那麼...

博弈論入門之巴什博奕

巴什博奕 兩個頂尖聰明的人在玩遊戲,有n個石子,每人可以隨便拿1 m個石子,不能拿的人為敗者,問誰會勝利 巴什博奕是博弈論問題中基礎的問題 它是最簡單的一種情形對應一種狀態的博弈 我們從最簡單的情景開始分析 當石子有1 m個時,毫無疑問,先手必勝 當石子有m 1個時,先手無論拿幾個,後手都可以拿乾淨...

博弈論入門 最簡單的博弈 巴什博弈

因此我們發現了如何取勝的法則 如果n m 1 r s,r為任意自然數,s m 那麼先取者要拿走s個物品,如果後取者拿走k m 個,那麼先取者再拿走m 1 k個,結果剩下 m 1 r 1 個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下 m 1 的倍數,就能最後獲勝。二 所有一步能走...