码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2484博弈——对称法

时间:2020-05-30 21:58:56      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:ret   ice   必须   lang   原来   class   题解   print   相同   

题目链接http://poj.org/problem?id=2484

题意:Alice和Bob玩游戏,从一堆圆环形排列的硬币中拿硬币,每次可以拿一个或者两个,但必须拿连续的(两个中间有空位也视为不连续),Alice先手,给定硬币个数,问谁赢。

题解:

当n=1或者n=2时,Alice可以一下子取走所有的硬币,获胜。

当n>=3时,Alice不管取多少硬币,她会把原来的圆环搞出一个缺口,这样就变成了一条链,而此时Bob如果把这条链分成两条长度相等的链(如果Alice取完后剩奇数个硬币,Bob就去最中间的那个,若是偶数,则取最中间的两个)。当Bob取完使两条链长度相同时,以后的每次操作,Bob只需跟着Alice的取法在另一条链里取即可。这样始终是Bob取完最后的硬币,Alice输。

#include <cstdio>
int main(){
	int n;
	while(scanf("%d", &n), n){
		if(n <= 2)
			printf("Alice\n");
		else
			printf("Bob\n");
	}
 
	return 0;
}

POJ 2484博弈——对称法

标签:ret   ice   必须   lang   原来   class   题解   print   相同   

原文地址:https://www.cnblogs.com/RioTian/p/12995031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!