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