写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。
输入
第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从"a"到"h",数字从"1"到"8"。
输出
对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出"Inf".
样例输入
2 a1 c3 f5 f8
样例输出
2 1 2 1 3 1 1 Inf
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,kingStep,queenStep,carStep,elephantStep,x,y;
char begin[3],end[3];
scanf("%d",&n);
for(int i = 0;i<n;i++)
{
scanf("%s %s",&begin,&end);
x = abs(begin[0] - end[0]);
y = abs(begin[1] - end[1]);
if(x==0&&y==0)
printf("0 0 0 0\n");
else
{
if(x>y)//王的步数
kingStep = x;
else kingStep = y;
printf("%d ",kingStep);
if(x==0||y==0||x==y)//后的步数
queenStep = 1;
else queenStep = 2;
printf("%d ",queenStep);
if(x==0||y==0)//车的步数
carStep = 1;
else carStep = 2;
printf("%d ",carStep);
if(abs(x-y)%2==0)//象的步数
{
if(x==y)
elephantStep = 1;
else elephantStep = 2;
printf("%d\n",elephantStep);
}
else printf("Inf\n");
}
}
}