poj2484

来源:互联网 发布:济宁seo公司 编辑:程序博客网 时间:2024/04/29 17:18

简单的找规律(博弈)

本题题意为,给出N个硬币围成一个圈,然后两个人从这圈硬币中轮流拿1个或毗邻的2个硬币。直到全部拿完为止,最后一个拿的人为,胜者。

        当N<=2时,肯定是最开始先拿的人胜利。因为此时只要拿一次就可以拿完。
       当N>=3时,肯定是第2个拿的人胜利,因为当N为偶数时,不管第1个人,怎么拿,第2个人拿与第一个人同样数量的硬币,且与第1人所拿硬币呈中心对称。最后一定是第2个人胜利。当N为奇数时,在第1轮中,只要第2个人所拿的硬币数与第1个人所拿的硬币数不同,且与第1人所拿硬币呈中心对称。经过第1轮后,就变成了N为偶数的情况一样的了。最后也是第2人胜利。
 
#include<iostream>#include<cstdio>using namespace std;int main(){    int n;    while(scanf("%d",&n)){    if(n==0)        break;    else if(n<=2)        cout<<"Alice"<<endl;    else if(n>2)        cout<<"Bob"<<endl;    }    return 0;}

0 0
原创粉丝点击