poj1657 找规律(棋盘)

2019-11-08  本文已影响0人  暖昼氤氲
/*
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;
}


上一篇 下一篇

猜你喜欢

热点阅读