問題模型:
只有一堆n個物品,兩個人輪流從這堆物品中取物品,規定每次至少取乙個,最多取m個。
解決思路:
若n=m+1時,由於先手最多只能取m個,所以無論先手怎麼取,剩下的都可以讓後手取完,即後手必勝。
假設n=(m+1)*r+s。
(1)當s不等於0,先手要拿走s個物品,此時後手處於在剩下(m+1)*r個物品的狀態進行取物品;假設
後手取k(1<=k<=m)個物品,則先手應該採取的決策時取走m+1-k個,此時讓後手處於(m+1)*(r-1)個物品的
狀態,如此下去,先手就可以取走最後乙個石頭,而將(m+1)*0的狀態給予後手(即後手無法取物品,無法將
遊戲繼續,故先手贏)。
(2)當s等於0,後手採用(1)中先手採用的方法可以使得自己必勝,所以此時後手必勝。
總結:當n=(m+1)*r+s(s!=0),即n%(m+1)!=0時,先手必勝。
當n=(m+1)*r+s(s==0),即n%(m+1)==0時,後手必勝。
巴什博弈的裸題:hdu 1846
/*
hdu 1846 取石頭遊戲
題意:n個石子,每次至少取乙個,最多取m個,
最後取完石子的人為勝。
分析:n%(m+1)!=0 先手必勝
n%(m+1)==0 後手必勝
*/#includeint main()
return 0;
}
巴什博弈 Bash Game
巴什博奕 bash game 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個,最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 r s,r...
數論 博弈 巴什博弈 BAshGame
巴什博弈 一堆物品有n個,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。當石子有1 m個時,毫無疑問,先手必勝 當石子有m 1個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗 當石子有m 2 2m時,先手可以拿走幾個,剩下m 1個,先手必勝 我們不難發現,面臨m 1個石...
巴什博奕(Bash Game)
巴什博弈 bash game,同餘理論 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 ...