LeetCode(292) Nim Game解题报告

来源:互联网 发布:超图软件实施待遇 编辑:程序博客网 时间:2024/05/14 15:34

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?

解题思路:

很容易分析出,如果谁是4,那么一定会输比赛,因为如果是5,6,7,都可以让对手变成4,所以可以赢比赛,如果是8的话,那么对手的数量一定会是5,6,7,所以会输,以此类推,不难得出 如果 n % 4 == 0 , 那么一定会输掉比赛,别的情况,都有可能赢(只要让对手一直维持着4的倍数,那么他一定会输)

public class Solution {     public boolean canWinNim(int n) {        return n % 4 == 0 ? false : true;    }}
0 0
原创粉丝点击