POJ 1657 Distance on Chessboard

2015-01-27 22:35:58 ? 作者: ? 浏览: 38

中文题。

【分析】:这题思路建立其实应该主要在对象的操作上,如何求出象走的步数是关键,其他的都比较好想到。

对于象,可以将棋盘上的格点分为两类:第一类是它的横坐标与纵坐标只差为奇数;第二类是差为偶数。

因为象每走一步,其横纵坐标增加或减少的绝对值是相等的,所以其横纵坐标的绝对值只差的奇偶性是不变的。所以如果出发时的横纵坐标差值是奇或偶,则终点一定是与其出发的点的奇偶性相同的,不相同就输出INF。而后如果 x==y,则一步就可以到达,如果不等,就2步到达。

详见代码:

//220k 0ms 
#include
  
   
using namespace std;

int main()
{
	int T;
	char begin[3],end[3];
	int x,y;
	cin>>T;
	while(T--)
	{
		cin>>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