292. Nim Game

1、题目spa

  一、审题code

  

 

  二、分析blog

    你先选,能选 1~3个砖头,对手在选 1~3个砖头。若你和对手都很聪明,且能拿到最后一块砖头的人胜利,给出砖头总数 n,求你是否能赢。class

 

2、解答im

  一、思路img

    因为是咱们先拿,那么3个之内(包括3个)的石子,咱们直接赢,若是共4个,那么咱们必定输,由于无论咱们取几个,下一我的一次都能取完。若是共5个,咱们赢,由于咱们能够取一个,而后变成4个让别人取,根据上面的分析咱们赢,因此最终能留出 4 个给对手选,咱们就能赢。列出1到10个的状况以下:di

1    Winco

2    Winreturn

3    Winps

4    Lost

5    Win

6    Win

7    Win

8    Lost

9    Win

10   Win

由此咱们能够发现规律,只要是4的倍数个,咱们必定会输,因此对4取余便可,参见代码以下:

    public boolean canWinNim(int n) {
//        return n % 4 != 0 ;
        return (n & 0b11) != 0;
    }
相关文章
相关标签/搜索