d057 - 11494 - Queen
題目描述
題目要求計算在 8x8 的西洋棋盤上,皇后從 (X1, Y1) 走到 (X2, Y2) 所需的最少步數。皇后可以沿水平、垂直或對角線方向移動任意格數。
解題思路
題目可以簡化為判斷兩個座標是否在同一條水平線、垂直線或對角線上。如果兩個座標相同,則步數為 0。如果兩個座標在同一條水平線或垂直線上,則步數為 1。如果兩個座標在同一條對角線上,則步數為 1。否則,步數為 2。程式直接根據這些條件進行判斷並輸出結果。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int a1,a2,b1,b2=0;
while(cin >> a1 >> b1 >> a2 >> b2){
if(a1==0){
return 0;
}
else if(a1==a2&&b1==b2){
cout << 0 << endl;
}
else if((a1==a2&&b1!=b2)||(a1!=a2&&b1==b2)){
cout << 1 << endl;
}
else if((a1-a2)==(b1-b2)||(a1-a2)==-(b1-b2)){
cout << 1 << endl;
}
else{
cout << 2 << endl;
}
}
}