题意:
有一堆石子,里面有n个石头,每次可以从中取出1~3个,两人轮流取,最后一个石子被谁取走即为赢家。你先取,问最后谁赢?
思路:
n%4>0则先手赢,因为每次总是可以给对方留4个石子的倍数,而对方最多只能取到3个,剩下的给先手来取,所以先手赢。
1 class Solution { 2 public: 3 bool canWinNim(int n) { 4 return n%4>0; 5 } 6 };
AC代码
时间: 2024-10-24 22:17:01
题意:
有一堆石子,里面有n个石头,每次可以从中取出1~3个,两人轮流取,最后一个石子被谁取走即为赢家。你先取,问最后谁赢?
思路:
n%4>0则先手赢,因为每次总是可以给对方留4个石子的倍数,而对方最多只能取到3个,剩下的给先手来取,所以先手赢。
1 class Solution { 2 public: 3 bool canWinNim(int n) { 4 return n%4>0; 5 } 6 };
AC代码