Distance on Chessboard
Description 国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间。如下图所示:
王、后、车、象的走子规则如下:
写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。 Input 第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从"a"到"h",数字从"1"到"8"。
Output 对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出"Inf".
Sample Input 2 Sample Output 2 1 2 1 Source |
[Submit] [Go Back] [Status] [Discuss]
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std; int main()
{
int n;
cin >> n;
while(n--) {
char b, e;
int B, E;
cin >> b >> B >> e >> E;
int keen, queen, car, ele;
int x, y;
x = abs(b - e);
y = abs(B - E);
if(x == y && y == ) {
keen = ; queen = ; car = ; ele = ;
}
else {
if(x < y) keen = y;
else keen = x;
if(x == y || x == || y == ) queen = ;
else queen = ;
if(x == || y == ) car = ;
else car = ;
if((x - y) % != ) ele = -;
else if(x == y) ele = ;
else ele = ;
}
if(ele == -) {
printf("%d %d %d Inf\n", keen, queen, car);
} else {
printf("%d %d %d %d\n", keen, queen, car, ele);
}
}
return ;
}