LeetCode——Nim Game

LeetCode——Nim Game

Question

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.c++

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.code

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.leetcode

Hint:rem

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?it

解題思路

strategy: the one with 4 remaining must looseio

# A, B playersevent

# if n == 4k, then at each round B can make A+B both take 4,table

# eventually leave 4 to A, A loseast

# if n == 4k + i (i <= 3), then A can always take i first and B willfunction

# finanly lose as he faces above scenario like A

具體實現

class Solution {
public:
    bool canWinNim(int n) {
        return bool(n % 4);
    }
};
相關文章
相關標籤/搜索