[Leetcode从零开刷]292.Nim Game

题目来源 leetdoe:
292、 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.

翻译:
两个人玩游戏,游戏是这样的:有一堆石头n块,每个人都移动1块,2块,或者3块,谁移动了最后一块石头即获得胜利。题目是,告诉你有多少块石头,由你先玩,问你是否能获得胜利。

解答:
假设只有1块石头:你赢了
假设只有2块石头:你赢了
假设只有3块石头:你赢了
假设只有4块石头:无论你第一次移动多少块石头,都是对方赢了。
假设有5块石头:则你移动一块石头,让对方开始移动四块石头,你赢了
假设有6块石头:你移动两块石头,则你赢了
假设有7块石头,你移动三块石头,则你赢了
假设有8块石头,无论你怎么移动,对方都可以让你面对四块石头的时候,你输了。
。。。
以此类推,当石头为4的整数倍时,你输了。

代码cpp:

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

2018年1月13重做了,发现比第一遍简单了,而且可以用java和c++,python,c,四种语言来尝试解答了。
继续加油~~
第一阶段的刷题大部分都是看答案的,希望第二阶段能有自己的思考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值