标签:nyoj 137 取石子三 取石子
小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。
游戏规则如下:共有N堆石子,已知每堆中石子的数量,两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),取过子之后,还可以将该堆石子中剩下的任意多个石子中随意选取几个放到其它的任意一堆或几堆上。等哪个人无法取子时就表示此人输掉了游戏。注意,一堆石子没有子之后,就不能再往此处放石子了。
假设每次都是小王先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量,请判断出小王能否获胜。
例如:如果最开始有4堆石子,石子个数分别为3 1 4 2,而小王想决定要先拿走第三堆石子中的两个石子(石子堆状态变为3 1 2 2),然后他可以使石子堆达到的状态有以下几种:
3 1 2 2(不再移动石子)
4 1 1 2(移动到第一堆一个)
3 2 1 2(移动到第二堆一个)
3 1 1 3(移动到第四堆一个)
5 1 0 2(全部移动到第一堆)
3 3 0 2(全部移动到第二堆)
3 1 0 4(全部移动到最后)
3 2 1 3 2 1 1 0
Win Lose
AC码:
#include<stdio.h> #define N 105 int main() { int n,a,i; int num[N]; while(~scanf("%d",&n)&&n) { for(i=0;i<N;i++) num[i]=0; for(i=0;i<n;i++) { scanf("%d",&a); num[a]++; } for(i=1;i<N;i++) { if(num[i]%2!=0) { printf("Win\n"); break; } } if(i>=N) printf("Lose\n"); } return 0; }
标签:nyoj 137 取石子三 取石子
原文地址:http://blog.csdn.net/u012804490/article/details/24648773