题目名称 800. [POJ1657] 棋盘上的距离
输入输出 poj_1657.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatar王者自由 于2012-05-28加入
开放分组 全部用户
提交状态
分类标签
数学
分享题解
通过:44, 提交:129, 通过率:34.11%
GravatarTA 100 0.000 s 0.00 MiB Pascal
Gravatar䱖虁職 100 0.000 s 0.00 MiB C++
Gravatar 100 0.000 s 0.00 MiB C++
Gravatar..... 100 0.000 s 0.17 MiB Pascal
Gravatar翟佳麒是我孙子 100 0.001 s 0.17 MiB Pascal
Gravatar张铭哲 100 0.001 s 0.17 MiB Pascal
Gravatar铁策 100 0.001 s 0.17 MiB Pascal
Gravatar天空非翔 100 0.001 s 0.17 MiB Pascal
GravatarFoolMike 100 0.001 s 0.17 MiB Pascal
Gravatar 100 0.001 s 0.17 MiB Pascal
关于 棋盘上的距离 的近10条评论(全部评论)
被象搞坏了,明明是井字走,没玩过不知道斜着走是啥概念
Gravatarjoel
2017-06-27 16:49 15楼
象的个数不限Orzzzz
用了奇葩的分类讨论,所以代码里有一堆又丑又长的if-else...
Gravatarliu_runda
2016-03-06 06:15 14楼
回复 @常可神牛 :
下过国际象棋的就是写得快- -
GravatarFoolMike
2014-10-20 23:21 13楼
poj.org
ctrl+c
ctrl+v
深藏功与名
GravatarHouJikan
2014-06-25 21:56 12楼
判断象能否到达其实就是判断起点和终点所在y=-x+b中,b的奇偶性的问题,即通过判断x+y的奇偶性。
GravatarTA
2014-03-16 12:51 11楼
@王者自由
今天没开O2开关就过了
请问O2怎么回事
Gravatar翟佳麒是我孙子
2013-11-06 20:28 10楼
Gravatar王者自由
2013-11-06 15:38 9楼
@王者自由
此题原来0.000s通过
再次提交原程序0分
电脑上运行成功
求解答
Gravatar翟佳麒是我孙子
2013-11-05 20:44 8楼
提示:(pas语言)
王:if abs(x1-x2)>=abs(y1-y2) then write(abs(x1-x2),' ') else write(abs(y1-y2),' ');
后:if (abs(x1-x2)=abs(y1-y2))or(x1=x2)or(y1=y2) then write('1 ') else write('2 ');
车:if (x1=x2)or(y1=y2) then write('1 ') else write('2 ');
象(这个的确最难):if ((x1+y1) mod 2)<>((x2+y2) mod 2) then writeln('Inf') else
if (x1-y1=x2-y2)or(x1+y1=x2+y2) then writeln(1) else writeln(2);
前面一定要有一句if (x1=x2)and(y1=y2) then writeln('0 0 0 0');
为什么?自己画图
Gravatar铁策
2013-11-03 18:32 7楼
要么深搜,要么广搜,然后就会发现规律
Gravatar铁策
2013-11-03 18:06 6楼

800. [POJ1657] 棋盘上的距离

☆   输入文件:poj_1657.in   输出文件:poj_1657.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

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

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


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

【输入格式】

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

【输出格式】

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

【样例输入】

2
a1 c3
f5 f8

【样例输出】

2 1 2 1
3 1 1 Inf

【来源】