zoukankan      html  css  js  c++  java
  • POJ 2484博弈——对称法

    题目链接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
    ");
    		else
    			printf("Bob
    ");
    	}
     
    	return 0;
    }
    
  • 相关阅读:
    Go Map
    Go XORM
    Go切片
    Go函数
    dockerfile常用指令
    Goroutine并发控制
    Go 格式转换
    Go 常用知识点及实例
    Go 时间
    Go error
  • 原文地址:https://www.cnblogs.com/RioTian/p/12995031.html
Copyright © 2011-2022 走看看