力扣(LeetCode)292. Nim游戏 巴什博奕
生活随笔
收集整理的這篇文章主要介紹了
力扣(LeetCode)292. Nim游戏 巴什博奕
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
你和你的朋友,兩個(gè)人一起玩 Nim游戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最后一塊石頭的人就是獲勝者。你作為先手。
你們是聰明人,每一步都是最優(yōu)解。 編寫(xiě)一個(gè)函數(shù),來(lái)判斷你是否可以在給定石頭數(shù)量的情況下贏得游戲。
示例:
輸入: 4
輸出: false
解釋: 如果堆中有 4 塊石頭,那么你永遠(yuǎn)不會(huì)贏得比賽;
因?yàn)闊o(wú)論你拿走 1 塊、2 塊 還是 3 塊石頭,最后一塊石頭總是會(huì)被你的朋友拿走。
解析 這是巴什博奕 n=k*(m+1)+r n是要報(bào)的數(shù),m是最多能報(bào)的數(shù),1是最少能報(bào)的數(shù),r是決定先手贏和后手贏得關(guān)鍵。
例如 A和B報(bào)數(shù),每個(gè)人報(bào)數(shù)最小1,最大4,看誰(shuí)先報(bào)到30。
A報(bào)1,B就報(bào)5-1=4
A報(bào)2,Bj就報(bào)5-2=3
A報(bào)m, B就報(bào)5-m
如果是30的話,B如此報(bào)法穩(wěn)贏。
如果是31的話,A就穩(wěn)贏。
Java版
class Solution {public boolean canWinNim(int n) {if(n%4==0) {//后手贏return false;}//先手贏return true;} }運(yùn)行結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/lick468/p/10678250.html
總結(jié)
以上是生活随笔為你收集整理的力扣(LeetCode)292. Nim游戏 巴什博奕的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 人工授精费用高吗
- 下一篇: 2019.04.09 电商25 结算功