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

poj 1740

时间:2017-08-16 21:51:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:相同   ios   ++   namespace   不同   奇数   name   输出   poj   

题意:Alice和Bob一起玩游戏,给定几个堆得石子,A和B分别拿一个堆中任意石子可放到其他石子数不为0的堆中

不能移动的人输,Alice为先手,若他赢输出1否则输出0;

题解:若有1堆石子则A必胜

若2堆石子个数相同,则无论先手怎么取,后手可取相同的将石子数还原

       不同,则先手可将两堆石子变相等,此时面对石子数相等的人必败

可得出结论  奇数堆A必胜,偶数堆时若石子数都是一对一对的则先手必败否则先手胜

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[110],temp[110];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n)
    {
        memset(temp,0,sizeof(temp));
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            temp[a[i]]++;
        }
        if(n%2)//奇数堆先手必胜 
        {
            cout<<"1"<<endl;
            continue;
        }
        int ans=0;
        for(int i=0;i<105;i++)
        {
            if(temp[i]%2)//检查石子数是否都是两两相等的 
                ans++;
        }
        if(ans==0)//若是先手必败 
            cout<<"0"<<endl;
        else
            cout<<"1"<<endl;
            
    }
}

 

poj 1740

标签:相同   ios   ++   namespace   不同   奇数   name   输出   poj   

原文地址:http://www.cnblogs.com/renwjing/p/7375588.html

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