巴什博奕
巴什博奕:
兩個頂尖聰明的人在玩遊戲,有\(n\)個石子,每人可以隨便拿\(1-m\)個石子,不能拿的人為敗者,問誰會勝利
巴什博奕是博弈論問題中基礎的問題
它是最簡單的一種情形對應一種狀態的博弈
博弈分析
我們從最簡單的情景開始分析
當石子有\(1-m\)個時,毫無疑問,先手必勝
當石子有\(m+1\)個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗
當石子有\(m+2-2m\)時,先手可以拿走幾個,剩下\(m+1\)個,先手必勝
我們不難發現,面臨\(m+1\)個石子的人一定失敗。
這樣的話兩個人的最優策略一定是通過拿走石子,使得對方拿石子時還有\(m+1\)個
我們考慮往一般情況推廣
- 設當前的石子數為\(n=k*(m+1)+r\)
先手會首先拿走\(r\)個,接下來假設後手拿走\(x\)個,先手會拿走\(m+1-x\)個,這樣博弈下去後手最終一定失敗
- 設當前的石子數為\(n=k*(m+1)\)
假設先手拿\(x\)個,後手一定會拿\(m+1-x\)個,這樣下去先手一定失敗
程式碼
#include<cstdio>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
if(n % (m+1) !=0) printf("first win");
else printf("second win");
return 0;
}