思路
x = 横坐标之差 y = 纵坐标之差
王:其实就是max(x, y),这个也是切比雪夫距离
后:在横竖斜三条线上为1,否则为2
车:在横竖两条线上为1,否则为2
象:同在白格子或黑格子即可到达,在同一条斜线上为1,否则为2
判断是否在一条斜线上其实也就是x是否等于y
白色格子和黑色格子(横坐标+纵坐标)奇偶性一定不同,同颜色的格子x-y一定为偶数。
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
int T; scanf("%d", &T);
while (T--)
{
char s[5], e[5]; scanf("%s %s%*c", s, e);
int x = abs(s[0] - e[0]), y = abs(s[1] - e[1]);
if (x == 0 && y == 0) { printf("0 0 0 0\n"); continue; }
printf("%d ", max(x, y));
printf("%d ", 2 - (x == 0 || y == 0 || x == y));
printf("%d ", 2 - (x == 0 || y == 0));
if (abs(x - y) % 2) printf("Inf\n");
else if (x == y) printf("1\n");
else printf("2\n");
}
return 0;
}
/*
2
a1 c3
f5 f8
*/