zoukankan      html  css  js  c++  java
  • LeetCode292-Nim游戏(智力题)

    这种轮流拿掉[N,M]个石头的问题,是时候总结下公式了!

    主要的核心就是,将问题转换为对方先手,然后你后手,使得每一轮,都保证是一个固定的数字。

    比如这个【1,3】个石头,很明显就是凑4,对面拿1个,你拿3个;对面拿2,你拿2;对面3,你1。那么这一轮,永远是4个,主动权永远在你手里。

    但是这个题目是你先手,那就把先手排除在外。 获胜的结果是,你是拿走最后一个石头的人,这里不要搞混,拿走最后3块,也算拿走最后一块了,以为在这三块里面。

    那要怎样才能获胜? 最后一轮你也可以凑4即可。 对面拿1个,你拿3个;对面拿2,你拿2;对面3,你1。

    那么总的石头个数就是,中间n个4,末尾一个4,加上先手是1~3个。

    【先手】【他,你】【他,你】【他。你】【他,你】

    这不就是4n+1~4n+3吗?

    所以只要num%4!=0 即可。。。。

    一开始想了很复杂!

    关键就是凑4,和想到最后的获胜条件。

    class Solution {
        public boolean canWinNim(int n) {
            if(n<=0)
                return false;
    
            if(n%4!=0)
                return true;
            else
                return false;
    
        }
    }
  • 相关阅读:
    一个不错的资源共享微盘
    LUA upvalue使用陷阱一例
    安卓破解视频教程合集
    开发Android逆向工具
    手机上编程,编写android apk
    smail修改字符串 汉字
    Android logcat命令详解
    protobuf
    Android Rxjava
    butterknife
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9683901.html
Copyright © 2011-2022 走看看