1. 程式人生 > >LeetCode 292. Nim遊戲 c++&java

LeetCode 292. Nim遊戲 c++&java

你和你的朋友,兩個人一起玩 Nim遊戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最後一塊石頭的人就是獲勝者。你作為先手。

你們是聰明人,每一步都是最優解。 編寫一個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。

示例:

輸入: 4
輸出: false 
解釋: 如果堆中有 4 塊石頭,那麼你永遠不會贏得比賽;

  因為無論你拿走 1 塊、2 塊 還是 3 塊石頭,最後一塊石頭總是會被你的朋友拿走。

C++: //剛開始看這題居然還被難倒了 , 後來發現這題目中居然是有提示的,只要堆中有4塊石頭,就用遠贏不了,那就把

4塊石頭留給對手,想通這個道理就很容易了,拿的時候根據對手的拿法,每次和對手拿的石頭的和是4就可以了

class Solution {

public:     bool canWinNim(int n) {         //分析 當有5-7 ,塊石頭  我贏         //         8    塊      輸         //         9-11 塊     贏         //  規律  當 n 為4 的整數時 , 我輸, 否則 我贏         if(n%4 == 0) return false ;         else return true ;     } };

java :

   class Solution {     public boolean canWinNim(int n) {         //分析 當有5-7 ,塊石頭  我贏         //         8    塊      輸         //         9-11 塊     贏         //  規律  當 n 為4 的整數時 , 我輸, 否則 我贏         if(n%4 == 0) return false ;         else return true ;       } }