#include<stdio.h>
#include<math.h>
void main()
{
int i, iTimes;
scanf("%d", &iTimes);
if(iTimes > 20 || iTimes < 0)
{
printf("error times!/n");
return;
}
for(i = 0; i < iTimes; i++)
{
int x, y;
char start[5], end[5];
scanf("%s %s", start, end);
x = abs(end[0] - start[0]);
y = abs(end[1] - start[1]);
if(x == 0 && y == 0)
printf("0 0 0 0/n");
else
{
if(x == 0 || y == 0) // 在同行或同列上
{
if(x != 0)
printf("%d ", x); // 王
else
printf("%d ", y); // 王
printf("1 "); // 后
printf("1 "); // 车
if(x != 0 && x%2 == 0)
printf("2/n");
else if(y != 0 && y%2 == 0)
printf("2/n");
else
printf("Inf/n"); // 象
}
else if(x == y) // 在对角线上
{
printf("%d ", x); // 王
printf("1 "); // 后
printf("2 "); // 车
printf("1/n"); // 象
}
else // 不同行也不同列更不在对角线上
{
if(x < y)
printf("%d ", y); // 王
else
printf("%d ", x);
printf("2 "); // 后
printf("2 "); // 车
printf("Inf/n"); // 象
}
}
}
}
本文介绍了一个简单的程序,该程序接收两个棋盘位置作为输入,并计算从一个位置到另一个位置的不同棋子(如王、后、车、象)所需的最少步数。程序首先验证输入的有效性,然后根据棋子的移动规则输出结果。
1557

被折叠的 条评论
为什么被折叠?



