zoukankan      html  css  js  c++  java
  • LeetCode292. Nim 游戏

    找规律的题目,对于1, 2, 3块石头,由于我们可以一次拿走,所以必赢。
    而如果是4块石头,不管我们拿多少块(1、2、3),最会剩下1~3块,使得对手可以一次拿走,所以必输。

    我们管n=1,2,3叫必胜态,n=4叫必败态。

    注意到,一个必败态的n加上1,2,3,又变成了必胜态。比如n=5,6,7的时候,我们可以(分别)拿1,2,3块石头,
    使得剩下的石头数量是4,留给对手一个必败态,这样我们就必胜了。
    所以一个必败态加1,加2,加3就是必胜态。

    而如果一个必败态+4,则不管我们拿多少块,都留给了对手一个必胜态。则我们必败了。

    所以规律就是,当n是4的倍数的时候,必败。
    其他情况下,必胜。、

    代码如下:

    class Solution {
    public:
        bool canWinNim(int n) {
            if(n % 4 == 0) {
                return false;
            }
            return true;
        }
    };
    
  • 相关阅读:
    PAT B1021 个位数统计 (15)
    PAT B1006 换个格式输出整数 (15)
    PAT A1058 A+B in Hogwarts (20)
    PAT A1027 Colors in Mars (20)
    PAT A1019 General Palindromic Number (20 分)
    PAT B1022 D进制的A+B
    J2EE
    MVC
    数据库长连接短连接
    twisted
  • 原文地址:https://www.cnblogs.com/linrj/p/13571858.html
Copyright © 2011-2022 走看看