你和你的朋友,兩個人一起玩 nim 遊戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最後一塊石頭的人就是獲勝者。你作為先手。
你們是聰明人,每一步都是最優解。 編寫乙個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。
示例:輸入: 4
輸出: false
解釋: 如果堆中有 4 塊石頭,那麼你永遠不會贏得比賽;
因為無論你拿走 1 塊、2 塊 還是 3 塊石頭,最後一塊石頭總是會被你的朋友拿走。
扒尿罐需要不停地調整自己的策略
首先從簡單的開始。你作為先手:
1. 肯定贏
2,肯定贏
3,肯定贏
4,輸,無論拿1,2,3,都拿不到4.
5,贏,可以先拿1,這樣對手就成4開始了
6,贏,可以先拿2,這樣對手就成4開始了
7,贏,可以先拿3,這樣對手就成4開始了
8,輸,無論你拿幾,對手都會讓你從4開始
以此類推,對方只要讓你從4,8,12,16,20等數字開始,你肯定輸。
盡量讓別人從4開始,你就贏了。
詳細解釋關注 b站 【c語言全**】學渣帶你刷leetcode 不走丟
學渣帶你刷Leetcode0035搜尋插入位置
給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4 輸入...
學渣帶你刷Leetcode0063不同路徑 II
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...
學渣帶你刷Leetcode0066加一
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...