zoukankan      html  css  js  c++  java
  • 292. Nim Game

    一、题目

      1、审题

      

      2、分析

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

    二、解答

      1、思路

        由于是我们先拿,那么3个以内(包括3个)的石子,我们直接赢,如果共4个,那么我们一定输,因为不管我们取几个,下一个人一次都能取完。如果共5个,我们赢,因为我们可以取一个,然后变成4个让别人取,根据上面的分析我们赢,所以最终能留出 4 个给对手选,我们就能赢。列出1到10个的情况如下:

    1    Win

    2    Win

    3    Win

    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;
        }
  • 相关阅读:
    filter与compress
    groupby,分组
    按照属性排序,使用lambda与itemgetter,attrgetter
    python3-cookbook电子书在线文档
    numpy中的向量操作
    向量Vector
    defaultdict与OrderedDict
    heapq堆队列
    (转载)SVM-基础(一)
    决策树-剪枝算法(二)
  • 原文地址:https://www.cnblogs.com/skillking/p/10015780.html
Copyright © 2011-2022 走看看