hdu 1907 John (Nim变形)

本文深入探讨了Nim游戏的变形策略,包括特定状态下的胜负判断规则,并提供了实现代码。主要内容涉及游戏状态分析、异或运算应用以及游戏决策逻辑。

http://acm.hdu.edu.cn/showproblem.php?pid=1907

Nim的变形,最后取为败,详见http://www.cnblogs.com/tanky_woo/archive/2010/08/20/1804464.html中取火柴游戏2。

这里总结下结论:

1. 当所有堆个数都为1时,若为奇数堆,即异或不为0,则先手败,反之先手胜。

2. 非所有堆个数都为1时,则异或不为0先手胜。

用上述博文中的定义则为T0, S1, S2为必胜态,T1, S0为必败态。

code:

#include<cstdio>
int main(){
     int t, n, f, i, a, sum ;
    scanf( " %d ", &t) ;
     while(t--){
        sum = f =  0 ;
        scanf( " %d ", &n) ;
         for(i= 0; i<n; i++){
            scanf( " %d ", &a) ;
            sum ^= a ;
             if(a> 1) f =  1 ;
        }
         if(sum) sum =  1 ;
         if(f^sum)   printf( " Brother\n ") ;
         else        printf( " John\n ") ;
    }
     return  0 ;} 

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/05/04/2482217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值