LeetCode筆記:292.Nim Game

問題:

You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.
Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.
For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.

大意:

你和你的一個(gè)朋友玩一個(gè)游戲:在一個(gè)桌子上有一堆石頭图张,每個(gè)人每次可以從中拿1個(gè)或2個(gè)或3個(gè)石頭木柬,你和你朋友兩個(gè)人輪流拿芙粱,誰拿走的桌上最后一波石頭韩玩,誰就贏了乎芳。你先拿。
假設(shè)你和你的朋友都會采取最佳策略逻翁。寫一個(gè)函數(shù)來判斷對于給出的一個(gè)數(shù)量的石頭龙填,你會不會贏失仁。
比如說尸曼,如果桌上有4個(gè)石頭,那么你肯定輸萄焦,無論你先拿1個(gè)還是2個(gè)還是3個(gè)控轿,最后一波石頭總是被你朋友拿走的。

思路:

乍一看好像不遞歸不可能判斷出來拂封,但其實(shí)演算一下茬射,發(fā)現(xiàn)是有規(guī)律可行的。

  1. 首先當(dāng)石頭數(shù)量是3個(gè)以下時(shí)冒签,你肯定會贏在抛。
  2. 當(dāng)石頭數(shù)量為4個(gè)時(shí),你肯定輸萧恕。
  3. 當(dāng)石頭數(shù)量為5刚梭、6肠阱、7個(gè)時(shí),你總是可以拿到桌上只剩4個(gè)朴读,那對于你朋友來說屹徘,他面對4個(gè)石頭,上面說了磨德,一定會輸缘回,所以你一定會贏。
  4. 當(dāng)石頭數(shù)量是8個(gè)時(shí)典挑,你不管怎么拿,最終桌上只會剩下5啦吧、6您觉、7三種情況,那么此時(shí)你朋友面對的就是情況3授滓,他就一定贏琳水,而你一定輸。
  5. 當(dāng)石頭數(shù)量是9般堆、10在孝、11時(shí),你總是可以把石頭拿到只剩8個(gè)淮摔,那么此時(shí)你朋友面對的就是情況4私沮,那他就一定輸,而你一定贏和橙。
    ……

這樣分析一下仔燕,規(guī)律就出來了,只要你面對的石頭數(shù)量是4的倍數(shù)魔招,那你就一定會輸晰搀,此外,你全都可以贏办斑,贏面還是很大啊哈哈外恕。代碼也呼之欲出了。

代碼(C++):

class Solution {
public:
    bool canWinNim(int n) {
        return n % 4 == 0 ? false : true;
    }
};

示例工程:https://github.com/Cloudox/NimGame
合集:https://github.com/Cloudox/LeetCode-Record


查看作者首頁

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乡翅,一起剝皮案震驚了整個(gè)濱河市鳞疲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峦朗,老刑警劉巖建丧,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異波势,居然都是意外死亡翎朱,警方通過查閱死者的電腦和手機(jī)橄维,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拴曲,“玉大人争舞,你說我怎么就攤上這事〕鹤疲” “怎么了竞川?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長叁熔。 經(jīng)常有香客問我委乌,道長,這世上最難降的妖魔是什么荣回? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任遭贸,我火速辦了婚禮,結(jié)果婚禮上心软,老公的妹妹穿的比我還像新娘壕吹。我一直安慰自己,他們只是感情好删铃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布耳贬。 她就那樣靜靜地躺著,像睡著了一般猎唁。 火紅的嫁衣襯著肌膚如雪咒劲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天胖秒,我揣著相機(jī)與錄音缎患,去河邊找鬼。 笑死阎肝,一個(gè)胖子當(dāng)著我的面吹牛挤渔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播风题,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼判导,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沛硅?” 一聲冷哼從身側(cè)響起眼刃,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摇肌,沒想到半個(gè)月后擂红,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡围小,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年昵骤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了树碱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡变秦,死狀恐怖成榜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹦玫,我是刑警寧澤赎婚,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站樱溉,受9級特大地震影響挣输,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饺窿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一歧焦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肚医,春花似錦、人聲如沸向瓷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猖任。三九已至你稚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朱躺,已是汗流浹背刁赖。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留长搀,地道東北人宇弛。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像源请,于是被迫代替她去往敵國和親枪芒。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容