zoukankan      html  css  js  c++  java
  • LeetCode——Nim游戏

    Q:你和你的朋友在玩下面的尼姆游戏:桌子上有一堆石头,每次你们轮流移走1到3块石头。谁把最后一块石头搬走谁就是胜利者。你将在第一个回合移走石头。你们俩都很聪明,在游戏中都有最佳的策略。写一个函数来确定你是否可以赢得游戏给定的石头堆的数量。例如,如果堆里有4块石头,那么你永远都赢不了游戏:无论你移走1、2或3块石头,最后一块石头都会被你的朋友移走。提示:如果堆里有5块石头,你能想办法把这些石头移走,这样你就永远是赢家了
    A:引用:https://www.cnblogs.com/grandyang/p/5226206.html
    有史以来最少代码量的解法,虽然解法很简单,但是题目还是蛮有意思的,题目说给我们一堆石子,每次可以拿一个两个或三个,两个人轮流拿,拿到最后一个石子的人获胜,现在给我们一堆石子的个数,问我们能不能赢。那么我们就从最开始分析,由于是我们先拿,那么3个以内(包括3个)的石子,我们直接赢,如果共4个,那么我们一定输,因为不管我们取几个,下一个人一次都能取完。如果共5个,我们赢,因为我们可以取一个,然后变成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 canWin(int n){
            return n%4;
        }
    
  • 相关阅读:
    HTML与css语法笔记
    HTML标记含义
    HTML-入门篇day01
    计算器
    九宫格
    5.28第十三周
    5.21 不用交得作业及答案
    5.22 上交作业
    5.15作业
    5.7作业
  • 原文地址:https://www.cnblogs.com/xym4869/p/12542655.html
Copyright © 2011-2022 走看看