zoukankan      html  css  js  c++  java
  • leetcode Nim game

    刚注册了leetcode,推荐的第一题就是Nim Game。

    You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.

    Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.

    For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.

    最开始我的想法是,既然第一次是我拿,目标是最后一次还是我拿,而且剩下的石子是1个,2个或者3个这种情况,后来写了一个,我发现自己没有考虑清楚,对手也是‘clever’的,所以没跑对。去查了一下。代码简单到不行。

    class Solution {  
    public:  
        bool canWinNim(int n) {  
            return (n%4==0)? false : true;  
        }  
    };   

    这是博弈论的题目,就是4个石头的情况一定是必败的,所以假如有8个石子,我先拿,无论我拿多少个,对手都会尽可能让我陷入4个石子的情况。以此类推,只要是4的整数倍的石子都是必败的。

  • 相关阅读:
    深入Vue.js从源码开始(二)
    Vue.js的动态组件模板
    Vue中的methods、watch、computed
    Understand .sync in Vue
    vue程序中组件间的传值方式
    xUtils框架的介绍(一)
    xUtils框架的介绍(二)
    Java如何计算hashcode值
    Java网络编程总结
    深入Java线程管理(五):线程池
  • 原文地址:https://www.cnblogs.com/LUO77/p/4885141.html
Copyright © 2011-2022 走看看