Exercise 2-2 棋盘上的距离

注:全部习题来自POJ 项目,原题目要求使用 C/C++ 实现。

问题描述

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

王、后、车、象的走子规则如下:

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

写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。

输入数据{{3}}

第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用”字母-数字”的形式表示,字母从”a”到”h”,数字从”1″到”8″。

输出要求

对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出”Inf”.

输入样例

2

a1 c3

f5 f8

输出样例

2 1 2 1

3 1 1 Inf

代码1

[[3]] Again,这里略去了输入测试数据组数的要求。[[3]]

[[4]] 这里有一个奇怪的问题。执行这两行会得到一个警告和输出 1。在使用 == 和 eq 进行比较时,应特别谨慎。[[4]]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据