程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> (LeetCode OJ) Nim Game【292】

(LeetCode OJ) Nim Game【292】

編輯:C++入門知識

(LeetCode OJ) Nim Game【292】


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.

Hint:

    If there are 5 stones in the heap, could you figure out a way to remove the stones such that you will always be the winner?

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

Subscribe to see which companies asked this question
Show Similar Problems

    //思路首先:將問題規模縮小,找規律:  
    //桌子上只有1個我必贏,2個我必贏,3個我必贏,4個我必輸,5個我必贏,6個必贏,7個必贏  
    //8個,就是兩個4,我第一輪無論怎麼摸石頭都能讓對手最後(以4為一個坎)摸完石頭,所以必輸  
    //也就是說n%4==0必輸了哦?最後試了一下,的確是這樣的。  
    class Solution {  
    public:  
        bool canWinNim(int n) {  
            return n%4!=0;//臥槽,此題代碼可以如此簡單,意義何在?  
        }  
    };  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved