poj1657 Distance on Chessboard

博客分析了棋盘上王、后、车、象四种棋子从起点到终点的最短步数计算方法。王的最短步数为横、竖、斜的最小步数之和;后和车的最短步数取决于是否一步可到达;象的行走受到横纵坐标奇偶性影响,不同颜色格子之间可能无法到达。
摘要由CSDN通过智能技术生成

本题关键在于分析棋盘上王、后、车、象的行走规则。

设起点坐标为(x1,y1),终点坐标为(x2,y2);dx=abs(x1,x2),dy=abs(y1-y2)。


1. 王可以横、竖、斜走,每步一格

所需最小步数为min(dx,dy)+abs(dx-dy)

对于橘黄色三角所在的特殊位置,先竖着走再斜着走和两次都斜着走所用的步数是一样的

2. 后可以横、竖、斜走,每步格数不限

横、竖、斜1步走到,否则2步走到

3. 车可以横、竖走,每步格数不限

横、竖1步走到,否则2步走到

4. 象只能斜走,每步格数不限

如果所在位置的横纵坐标之差为奇数,会落入图中黑色方格内,如果之差为偶数,会落入图中白色方格内。象每斜着走一步,它的横纵坐标增加或减少的绝对值相等,所以它的横纵坐标之差的奇偶性不会变。

因此图中的任一点斜着走会分成黑白两道,白色方格斜着走必定会落入白色方格,黑色方格斜着走必定还落入黑色方格,两者互相不可达。因此如果起点和终点不是同一类方格,则不可达。如果起点和终点属于同一类方格,要么斜着1步可达,否则2步可达,因为如图所示,任何一个位于蓝线上的白色方格通过一步斜走可以到达任何一个其他白色方格所在的蓝线,然后再斜走一步即可到达该蓝线上的目标方格(或者先在自己所在的蓝线上一步斜走到对应位置,再一步斜走到达目标方格)<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值