LeetCode-Brainteaser-292. Nim Game
来源:互联网 发布:端口聚合的作用 编辑:程序博客网 时间:2024/06/09 22:43
问题:https://leetcode.com/problems/nim-game/?tab=Description
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个石头,那么你永远也无法赢得比赛:无论你移除了1、2或3个石头,最后一个石头都会被你的朋友所移除。
分析:博弈论取石子的经典问题,每次最多取1-m个石子。在初始状态一定的情况下,博弈的结果不是必胜就是必败,所以必败的状态就是剩余4个石子的情况,同样4的倍数都是必败的。关键要推导出必胜或必败的公式。
参考C++代码:
class Solution {public: bool canWinNim(int n) { return n%4!=0; }};
- LeetCode-Brainteaser-292. Nim Game
- leetcode:Brainteaser:Nim Game(292)
- [leetcode] 292.Nim Game
- 【LeetCode】292.Nim Game
- leetcode:292. Nim Game
- leetCode 292. Nim Game
- 292. Nim Game LeetCode
- LeetCode 292. Nim Game
- LeetCode 292. Nim Game
- LeetCode 292.Nim Game
- LeetCode 292. Nim Game
- [LeetCode]292.Nim Game
- <LeetCode> 292. Nim Game
- leetcode-292.Nim Game
- LeetCode 292. Nim Game
- LeetCode *** 292. Nim Game
- leetcode 292. Nim Game
- Leetcode 292. Nim Game
- 卡特兰数问题
- python笔记 对txt文件的读写
- Service(上)
- Python 基本语句
- 笔记1:ubuntu14.04 caffe环境搭建
- LeetCode-Brainteaser-292. Nim Game
- Android中shape和selector的使用
- DB_NAME、DB_UNIQUE_NAME、SERVICE_NAME和INSTANCE_NAME等的区别
- 交换机trunk模式工作原理
- 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」
- 环信java注册实例
- centos7制作本地源
- a标签中href=""的几种用法
- Android属性之build.prop生成过程分析