题目:
解释:Nim游戏是典型的博弈游戏。这道题目乍一看很难,觉得好像无从下手,但是可以通过做几组分析来找一下规律,会更有利于这道题目的解答。
n = 1 时,第一个人取1个,必胜
n = 2 时,第一个人取2个,必胜
n = 3 时,第一个人取3个,必胜
n = 4 时,无论第一个人取几个,都不会胜(题目中也有给提示)
【那么这里我们可以先做一个标记:被留给4个石子的那个人一定不会获胜】
n = 5 时,第一个人取1个,留给第二个人4个,第一个人必胜
n = 6 时,第一个人取2个,留给第二个人4个,第一个人必胜
n = 7 时,第一个人取3个,留给第二个人4个,第一个人必胜
n = 8 时,无论第一个人取几个,第二个人都可以留给他4个石子,那么第一个人一定不会获胜
由此我们可以得出一个规律:只要石子总数为4的倍数,第一个人一定不会有获胜的机会
代码↓
#include <iostream>
using namespace std;
class Solution {
public:
bool canWinNim(int n) {
return n % 4;
}
};
int main(){
Solution so;
int n = 4;
cout << so.canWinNim(n) << endl;
system("pause");
return 0;
}