博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3480 John [博弈之Nim 与 Anti-Nim]
阅读量:5363 次
发布时间:2019-06-15

本文共 895 字,大约阅读时间需要 2 分钟。

Nim游戏:有n堆石子,每堆个数不一,两人依次捡石子,每次只能从一堆中至少捡一个。捡走最后一个石子胜。

先手胜负:将所有堆的石子数进行异或(xor),最后值为0则先手输,否则先手胜。

================================

Anti-Nim游戏:游戏与Nim游戏基本相同,只是捡走最后一个石子者输。

先手胜负:将所有堆的石子数进行异或(xor),如果异或结果为0且所有堆的石子数全为1,或者异或结果为0且存在数量大于1的石子堆,则先手胜。否则先手输。

该题即是Anti-Nim游戏,知道判定的规则后很简单。

 

1 #include
2 #include
3 using namespace std; 4 int main() 5 { 6 int t; 7 scanf("%d", &t); 8 while (t--) 9 {10 int n, col, osum = 0;11 int tmax = 0;12 scanf("%d", &n);13 for (int i = 1; i <= n; i++)14 {15 scanf("%d", &col);16 tmax = max(tmax, col);17 osum ^= col;18 }19 if (tmax == 1 && !osum) printf("John\n");20 else if (tmax > 1 && osum) printf("John\n");21 else printf("Brother\n");22 }23 return 0;24 }

 

 

 

转载于:https://www.cnblogs.com/fenshen371/p/3293393.html

你可能感兴趣的文章
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
linux的子进程调用exec( )系列函数
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
Redis常用命令
查看>>
[转载]电脑小绝技
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>