尼姆博弈

题目:最后一个

某天,wym6912和wang9897玩游戏。

有n个透明盒子,每个盒子里有ai个小球,每个玩家每轮可以选择其中的一个非空的盒子取走若干个小球,且每次最少取走一个。取走最后一个小球的玩家失败。

wym6912先手,在两人都足够聪明的情况下(每次都能选择最优方案),请问谁最终能赢?

输入
多组数据,处理到文件尾(EOF) 结束
对于每组数据:

  • 第一行一个正整数n,表示有n个盒子
  • 第二行为n个数字,表示每个盒子里小球的个数ai

输出
若wang9897赢,则输出"orzwang9897"
若wym6912赢,则输出"orzwym6912"
(均不含引号)

样例输入
2
1 1
3
1 1 1
样例输出
orzwym6912
orzwang9897
提示
1<=n<=6

0 <=ai <=6

∑ai >=1

#include<stdio.h>
int main(){
	int n,m,x;
	while((scanf("%d",&m))!=EOF){
		int num=0;
		int s=0;
		
		while(m--){
			scanf("%d",&x);
			if(x>1)
			num++;
			s^=x; 
		}
		if(num==0&&s==0||(num>0&&s!=0)){
			printf("orzwym6912\n"); 
		}
		else
		printf("orzwang9897\n");
	}
	return 0;
}

如需要学习尼姆博弈,参见:
https://blog.csdn.net/dear_jia/article/details/80200170

https://blog.csdn.net/BBHHTT/article/details/80199541

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值