/*
Time:2019.11.8
Author: Goven
type:棋盘找规律
err: 1.斜线有两种情况 统一为 abs(y1 - x2) == abs(x1 - x2)
2.并且 对应y-y,x-x,不能y-x
ref:
题目;
if(x1==x2&&y1==y2) 0
王:max(|y2-y1|,|x2-x1|)
后:if(斜线 || x1 == x2 || y1 == y2) 1;else 2
车:if(x1==x2 || y1==y2) 1;else 2
象:只要是同颜色的就能到达,否则是不能到达的
相同颜色的:if(斜线) 1;else 2
*/
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
char x1, x2;
int y1, y2;
bool flagx, flagy, flagxy;
while (n--) {
cin >> x1 >> y1 >> x2 >> y2;
flagx = x1 == x2;
flagy = y1 == y2;
flagxy = abs(y1 - y2) == abs(x1 - x2);//err2:开始写的是y1 - x1 == y2 - x2,没有加绝对值,斜线可能有两种情况(y1 - x1 = +-(y2 - x2))错误例子g3 d6
//err3:对应y相减,用y1 - x1不对
if (flagx && flagy) {
cout << "0 0 0 0" << endl;
continue;
}
cout << max(abs(y1 - y2), abs(x1 - x2));
if (flagxy || flagx || flagy) cout << " 1";//err1:没有加flagx,flagy
else cout << " 2";
if (flagx || flagy) cout << " 1";
else cout << " 2";
if (abs(y1 - x1) % 2 != abs(y2 - x2) % 2) cout << " Inf" << endl;
else {
if (flagxy) cout << " 1" << endl;
else cout << " 2" << endl;
}
}
return 0;
}
网友评论