LeetCode--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.
  你和你的朋友一起玩儿Nim游戏:桌子上有一堆石头,每次只能拿走1到3颗,最后一颗石头被谁拿走谁是赢家。石头由你先拿。
  你和你的朋友都很聪明,会采取最好的策略。写一个函数来确定,在石头数目确定时,你会不会赢得游戏。
  例如:假如有四个石头,你无论如何也不会赢。

二,分析

  因为之前见过类似的问题,所以很快就有思路。关键是在于两个人都会采取最好的策略,什么是最好的策略呢?这意味着,如果桌子上只剩两块石头,对方不会只拿走一块把最后一块让给你。题目中提示了,如果面前有4块石头肯定会输(因为对方也采取了最好的策略),所以要避免让自己面前只剩四块石头,也就是说,要想办法让对方剩四块石头,推理会知,加入你可以让对方剩8块石头,那么你就一定可以让对方剩四块石头。所以得到,谁面前剩的石头数目是4的倍数,谁就会输。

三,代码

class Solution {
public:
    bool canWinNim(int n) {
       if(n%4!=0) return 1;
       return 0;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值