Distance on Chessboard
描述
国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间。如下图所示:

王、后、车、象的走子规则如下:
王:横、直、斜都可以走,但每步限走一格。
后:横、直、斜都可以走,每步格数不受限制。
车:横、竖均可以走,不能斜走,格数不限。
象:只能斜走,格数不限。

写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。
输入
第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从"a"到"h",数字从"1"到"8"。
输出
对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出"Inf".
样例输入
2
a1 c3
f5 f8
样例输出
2 1 2 1
3 1 1 Inf
来源
POJ Monthly–2004.05.15 Liu Rujia@POJ

问题链接:POJ1657 Bailian1657 Distance on Chessboard
问题描述:(略)
问题分析
    这个问题是给出棋盘上的起始位置,分别计算王后车象从起始位置到达终止位置所需的步数。可以先算出横向坐标的差值dx和纵向坐标的差值dy。起止位置相同时,只需要走0步。
    分别考虑王后车象的行走规则,王可以直走、横走和邪走,所以所需要走的步数为dx和dy中较大的;后可以八个方向行走,所以处在同行、同列和同一邪线上则走1步就到目标位置,否则走2步即可;车可以横走也可以竖走,如果在同一行或同一列上则走1步就到目标位置,否则走2步就可以到目标位置;象是走邪线,有黑象和白象之分,如果在同一邪线上则1步可到目标位置,如果在同一颜色的邪线上最多2步可以到达目标位置,否则就不可到达目标位置。
程序说明
    数组ans[]的元素分别用于存储王后车象的步数。计算与输出逻辑分开。
参考链接:(略)
题记:(略)

AC的C语言程序如下:

/* POJ1657 Bailian1657 Distance on Chessboard */#include <stdio.h>
#include <stdlib.h>#define MAX(x, y) (((x) > (y)) ? (x) : (y))#define N 4int main(void)
{int t, kcnt, qcnt, rcnt, bcnt;scanf("%d", &t);while(t--) {char start[3], end[3];scanf("%s%s", start, end);int dx = abs(end[0] - start[0]);int dy = abs(end[1] - start[1]);if(dx == 0 && dy == 0)kcnt = qcnt = rcnt = bcnt = 0;  /*王后车象的步数*/else {kcnt= MAX(dx, dy);qcnt = (dx == dy || dx == 0 || dy == 0) ? 1 : 2;rcnt = (dx == 0 || dy == 0) ? 1 : 2;if(dx == dy)bcnt = 1;else if(abs(dx - dy) % 2 != 0)bcnt = -1;elsebcnt = 2;}printf("%d %d %d ", kcnt, qcnt, rcnt);if(bcnt == -1)printf("Inf\n");elseprintf("%d\n", bcnt);}return 0;
}

POJ1657 Bailian1657 Distance on Chessboard【基础】相关推荐

  1. 国际象棋走棋步数(Distance on Chessboard)计算程序

    国际象棋走棋步数(Distance on Chessboard)计算程序 国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间.如下图所示: 王.后.车.象的走子规则如下:  王:横.直.斜都 ...

  2. 程序设计入门经典题解(百练篇)

    参考链接:PKU百练题解(Bailian) Bailian1017 装箱问题[贪心] - 海岛Blog - CSDN博客 POJ1088 Bailian1088 滑雪[DFS+记忆化搜索]_海岛Blo ...

  3. (转载)ACM训练计划,先过一遍基础再按此拼搏吧!!!!

    ACM大量习题题库 ACM大量习题题库  现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO h ...

  4. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记

    一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...

  5. 左程云算法笔记总结-基础篇

    基础01(复杂度.基本排序) 认识复杂度和简单排序算法 时间复杂度 big O 即 O(f(n)) 常数操作的数量写出来,不要低阶项,只要最高项,并且不要最高项的系数 一个操作如果和样本的数据量没有关 ...

  6. ACM 网址和一些建议

    USACO http://ace.delos.com/usacogate 美国著名在线题库,专门为信息学竞赛选手准备 TJU http://acm.tongji.edu.cn/ 同济大学在线题库,唯一 ...

  7. (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目

    POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...

  8. python的文本编辑geny_android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)...

    android模拟器(genymotion)+appium+python 框架执行的基本过程: 1.Push.initDate(openid)方法     //业务数据初始化 1.1   v5db.p ...

  9. ACM大量习题题库及建议培养计划

    ACM大量习题题库 ACM大量习题题库  现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO h ...

最新文章

  1. LTE voice centric和data centric
  2. 简述Linux 文件系统的目录结构
  3. noi题库(noi.openjudge.cn) 3.9数据结构之C++STL T1——T2
  4. 分子生物学-肽和多肽
  5. centos7.0 没有netstat 和 ifconfig命令问题
  6. DLL和COM的发展过程
  7. PIL简单图片处理(上)
  8. Discuz完整手动迁移教程(不使用备份功能)
  9. 一文理解 pytorch 拟合网络的过程
  10. b站黑马程序员java视频学习笔记01
  11. MatConvNet对自己的图片分两类及提取图片特征
  12. linux光盘属于什么设备,Linux系统中,光盘的设备文件为
  13. 树莓派3B 之IIC通信
  14. Docker笔记 —— 简介与安装 + Centos的一些配置
  15. 3dsmax 选不中export,无法导出,选不中二级菜单
  16. CodeBlocks下创建.h .cpp文件
  17. 电脑或U盘文件夹变为后缀为.exe文件,解决办法。
  18. python-yacs库的用法
  19. 苹果cms模板_为什么选择苹果CMS?
  20. 【ECharts系列|03可视化大屏】大数据管理平台实时展示

热门文章

  1. 使用Maven构建Spring项目“HelloWorld”
  2. golang使用http client发起get和post请求示例
  3. Google FlatBuffers——开源、跨平台的新一代序列化工具
  4. 计算机绘图自考知识点,全国自考机械制图一试题2004.04
  5. commons-fileupload 上传图片路径到mysql_上传图片到服务器并将图片路径保存到数据库...
  6. java ee 程序_第一个 JavaEE 应用程序 - JavaWeb 入门开发教程
  7. 【java学习之路】(javaWeb【后端】篇)007.AjaxAxios
  8. Python高阶——try /except异常处理
  9. work summary(3)
  10. VB.NET/ASP.NET编码规范(ZT)