博弈論入門之巴什博奕


巴什博奕

巴什博奕:

兩個頂尖聰明的人在玩游戲,有\(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;
}

題目

題解

題解

題解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM