LeetCode-Brainteaser-292. Nim Game
2017-03-02 10:20
393 查看
问题: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++代码:
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]--292. Nim Game
- LeetCode292. Nim Game
- [leetcode][easy]292. Nim Game
- 292. Nim Game leetcode
- leetcode(75).292. Nim Game
- leetcode 292. Nim Game(C语言)
- leetcode 292. Nim Game
- leetcode No292. 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(轮流拿掉石头)
- Leetcode292. Nim Game
- [LeetCode]292. Nim Game
- Leetcode 292. Nim Game
- LeetCode 292. Nim Game
- LeetCode -- 292. Nim Game
- Leetcode:292. Nim Game 是否能赢得比赛