“蔚来杯“2022牛客暑期多校训练营6-M-Z-Game on grid

这篇博客探讨了一种两人棋盘游戏的策略,玩家Alice和Bob在n×m的棋盘上移动,目标是到达'A'、'B'或棋盘边缘。通过位运算和动态规划,分析了在不同情况下Alice和Bob的获胜策略,以及如何确保特定的获胜条件。文章提供了一个C++代码示例来解决这个问题。

"蔚来杯"2022牛客暑期多校训练营6-M-Z-Game on grid

题目大意

Alice和Bob在一个 n × m n\times m n×m的棋盘上玩游戏,起点为 ( 0 , 0 ) (0,0) (0,0),每次只能向下移一格或向右移一格,即从 ( x , y ) (x,y) (x,y)移至 ( x + 1 , y ) (x+1,y) (x+1,y) ( x , y + 1 ) (x,y+1) (x,y+1)。棋盘上有’A’和’B’,移动至’A’为Alice赢,移动至’B’为Bob赢,移动至 ( n , m ) (n,m) (n,m)为平局。现在,Alice先移动,问有没有走法使Bob无论怎么走,结果都为Alice赢或平局或Bob赢。

解析

这是一道博弈题,所以我们先把问题拆分成小一点的情况来分析(黄色框表示当前所在格子)。

  • 1
    请添加图片描述
    显然,此时不管怎么走,都是Alice赢,都为B也是同理,为Bob赢。

  • 2
    请添加图片描述
    此时的结果就与走的人有关了,如果此时Alice走,那么Alice可以保证Alice赢或是Bob赢,而如果此时是Bob走,那么Alice就不能保证输赢。因为每次只能走一格,我们可以得到,当位于 ( x , y ) (x,y) (x,y)时,若 ( x + y ) m o d 2 = 0 (x + y) mod 2=0 (x+y)mod2=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值