POJ1657--Distance on Chessboard

来源:互联网 发布:手机版cad软件 编辑:程序博客网 时间:2024/05/13 03:37
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <string>#include <queue>#include <algorithm>using namespace std;int main(){    int t;    string s1,s2;    cin>>t;    while(t--)    {       cin>>s1>>s2;       int x = abs(s1[0]-s2[0]);       int y = abs(s1[1]-s2[1]);       if(x+y==0)       {           cout<<"0 0 0 0"<<endl;           continue;       }       if(x>y) cout<<x<<" ";//王只能走一步       else cout<<y<<" ";       if(x==0||y==0||x==y)            cout<<1<<" ";       else            cout<<2<<" ";       if(x==0||y==0)        cout<<1<<" ";       else        cout<<2<<" ";       if(x==y) cout<<1<<endl;//象在x,y相差为偶数的时候,才能走到       else if(abs(x-y)%2==0) cout<<2<<endl;       else cout<<"Inf"<<endl;        //t--;    }    //cout << "Hello world!" << endl;    return 0;}

Distance on Chessboard
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 25313 Accepted: 8670

Description

国际象棋的棋盘是黑白相间的8 * 8的方格,棋子放在格子中间。如下图所示: 

王、后、车、象的走子规则如下: 
  • 王:横、直、斜都可以走,但每步限走一格。 
  • 后:横、直、斜都可以走,每步格数不受限制。 
  • 车:横、竖均可以走,不能斜走,格数不限。 
  • 象:只能斜走,格数不限。


写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。 

Input

第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从"a"到"h",数字从"1"到"8"。 

Output

对输入的每组测试数据,输出王、后、车、象所需的最少步数。如果无法到达,就输出"Inf".

Sample Input

2a1 c3f5 f8

Sample Output

2 1 2 13 1 1 Inf

0 0
原创粉丝点击