$\color{green}{<–画图不易,点下这里}$
分情况讨论
起点 a
, 终点 b
,传送门:c
, d
.
- 情况一:不使用传送门,
abs(b - a)
- 情况二:
a
->c
然后通过c
传送到d
, 再从d
->b
。总距离为abs(a - c) + abs(b - d)
。
- 情况二:
a
->d
然后通过d
传送到c
, 再从c
->b
。总距离为abs(a - d) + abs(b - c)
。
三种情况取最小值即可。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a, b, c, d;
int main(){
cin >> a >> b >> c >> d;
//3 种情况取最小值即可
cout << min({abs(b - a), abs(a - c) + abs(d - b), abs(a - d) + abs(b - c)});
return 0;
}
图画的很清晰,很强
海绵宝宝 nb