分析:当n = 1 和 n = 2时,明显的是先下手的 Alice 赢;
而当 n >= 3时, 若n 是偶数,无论先下手的Alice 如何取, Bob只要在其相对的位置取相同的coins即可获胜;
若n 是奇数,如果Alice 先取1个硬币, 则Bob 在其相对的位置取2个后,剩余的硬币数就可以回归到上述的偶数情况了,还是 Bob赢;
如果Alice 先取2个硬币,则Bob 在其相对的位置取1个后,剩余的硬币数就可以回归到上述的偶数情况了,还是 Bob赢;
程序没有优化过
#include<iostream>
using namespace std;
int main()
{
while(1)
{
int n;
cin >> n;
if(n == 0)
{
break;
}
if(n >= 3)
{
cout << "Bob" << endl;
}
else
{
cout << "Alice" << endl;
}
}
return 0;
}