http://poj.org/problem?id=2484
1和2时Alice必胜,3时Bob必胜,其他情况下Bob只需要在Alice取过之后取一次将剩下的硬币链平均分为两份,然后Alice怎么取Bob对称着取就可以了。

真是巧妙。
代码
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 #include<iostream> 6 #include<map> 7 using namespace std; 8 int m; 9 int main(){ 10 while(~scanf("%d",&m)){ 11 if(!m)break; 12 if(m<3)printf("Alice\n"); 13 else printf("Bob\n"); 14 } 15 return 0; 16 }
本文解析了POJ2484博弈论游戏问题,通过分析得出当硬币数量为1或2时Alice获胜,3时Bob获胜,其他情况Bob采取特定策略即可获胜。代码实现简洁明了。
461

被折叠的 条评论
为什么被折叠?



