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的整数倍的石子都是必败的。

  • 相关阅读:
    Linux定时运行程序脚本
    git tips
    Python循环
    Head First Design Patterns
    animation过渡效果
    图像处理池化层pooling和卷积核
    TensorFlow的梯度裁剪
    神经网络优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
    CNN网络架构演进
    TensorFlow object detection API应用
  • 原文地址:https://www.cnblogs.com/LUO77/p/4885141.html
Copyright © 2011-2022 走看看