POJ - 1704 Georgia and Bob

Georgia and Bob

题意:

在这里插入图片描述

  • 一个水平网格上有N个棋子
  • Georgia和Bob每到自己回合时可以向左移动网格上任意一个棋子任意步数
  • 棋子与棋子之间不能重叠和相互跨越
  • 当到对手回合时,其无法再移动任何棋子则我方赢
  • 假设Georgia和Bob都采用最优策略,谁会赢得比赛?

输入要求:

  • 第一行依次输入网格上所有棋子所在的位置,如:1 3 6 7
  • 第二行输入先手者的名字,如:Georgia

输出要求:

  • 如果Georgia赢的比赛,输出:“Georgia will win”
  • 如果Bob赢的比赛,输出:“Bob will win”
思路:
  • 把该问题类比Nim游戏
  • 每两个棋子:看作一个石堆,如上图中1和3看作一个石堆,6和7看作一个石堆,如果棋子个数为奇数个,那么首个棋子与网格的边界作为一个石堆
  • 棋子之间的空格数量:看作石堆中的石子数量
  • 任意一个棋子向左移动任意步数:看作从任意一个石堆中取出任意数量石子
  • 只需要判断所有的初始石堆(所有的每两个一组的棋子),相应石子数量(每组棋子中间的空格数量)的异或结果是否为0即可

解释一下为什么上图中3和6之间的空格不做考虑:因为如果双方均采用最优策略,那么即便移动6,下一个回合对手肯定要移动7来跟进6,保证了6和7之间的空格不会改变,最终结果就是3和6会靠在一起,两个为一组的棋子之间的空格没有改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值