C++程式碼查詢兔子拉箱子的總時間
假設我們有兩個座標 (x1, y1) 和 (x2, y2)。一隻兔子正在拉食物箱。它用一根只有1個單位長度的繩子繫著箱子。兔子會把箱子拉到它站立的位置,然後在同一方向上再移動1個單位離開。兔子可以向右、左、上或下移動1個單位,而不用拉箱子。在這種情況下,它不需要正好距離箱子1個單位。如果它想再次拉箱子,它必須走到箱子旁邊的一個點。兔子可以從任意點開始。它在任何方向上移動1個單位需要1秒。我們需要找到將箱子從起始位置移動到結束位置所需的最短時間。
因此,如果輸入類似於 x1 = 1; y1 = 1; x2 = 2; y2 = 2,則輸出將是 4,因為兔子可以從點 (2,1) 開始。它在 (3,1) 的位置時將箱子拉到 (2,1)。然後移動到 (3,2),然後移動到 (2,2) 而不用拉箱子。然後,在移動到 (2,3) 的同時將箱子拉到 (2,2)。這需要 4 秒。
步驟
為了解決這個問題,我們將遵循以下步驟:
s := 0 if x1 is not equal to x2 and y1 is not equal to y2, then: s := |x2 - x1| + |y2 - y1| Otherwise s := |x2 - x1| + |y2 - y1| return s
示例
讓我們看看以下實現以更好地理解:
#include <bits/stdc++.h>
using namespace std;
int solve(int x1, int y1, int x2, int y2){
int s = 0;
if (x1 != x2 && y1 != y2)
s = abs(x2 - x1) + abs(y2 - y1) + 2;
else
s = abs(x2 - x1) + abs(y2 - y1);
return s;
}
int main(){
int x1 = 1;
int y1 = 1;
int x2 = 2;
int y2 = 2;
cout << solve(x1, y1, x2, y2) << endl;
}輸入
1, 1, 2, 2
輸出
4
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP