原题解链接:https://ac.nowcoder.com/discuss/153563
找规律。
首先考虑斜着走,每走一步都会使横坐标和纵坐标的距离减,可以持续这个操作使得两个点处在同一水平或者竖直的线上。此时每斜着走两步会使距离减。
所以如果它们的距离为偶数,那么可以按照两步两步的走过去,否则先到达终点旁边的格子,再花费一次上下左右走的次数,到达终点。
复杂度
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
long long n, a, b, c, d;
cin >> n >> a >> b >> c >> d;
cout << max(abs(c - a), abs(d - b));
return 0;
}