Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm tổng thời gian để kéo chiếc hộp bằng con thỏ

Giả sử chúng ta có hai tọa độ (x1, y1) và (x2, y2). Một con thỏ đang kéo hộp thức ăn. Anh ta được buộc bằng một sợi dây chỉ có 1 sợi dây cỡ đơn vị. Rabbit sẽ kéo chiếc hộp đến vị trí nó đang đứng trước khi di chuyển ra khỏi đường cùng hướng 1 đơn vị. Thỏ có thể di chuyển 1 đơn vị sang phải, trái, lên hoặc xuống mà không cần kéo hộp. Trong trường hợp này, không cần thiết phải cách hộp không chính xác 1 đơn vị. Nếu anh ta muốn kéo chiếc hộp một lần nữa, nó phải đi đến một điểm bên cạnh chiếc hộp. Thỏ có thể bắt đầu bất cứ lúc nào. Mất 1 giây để đi được 1 đơn vị theo phương bất kỳ. Chúng tôi cần tìm khoảng thời gian tối thiểu cần thiết để di chuyển hộp từ vị trí bắt đầu đến vị trí cuối.

Vì vậy, nếu đầu vào giống như x1 =1; y1 =1; x2 =2; y2 =2, thì đầu ra sẽ là 4, vì Rabbit khởi động tại điểm (2,1). Nó kéo hộp đến (2,1) trong khi nó ở (3,1). Sau đó di chuyển đến (3,2) và đến (2,2) mà không kéo hộp. Sau đó, kéo hộp đến (2,2) trong khi di chuyển đến (2,3). Mất 4 giây.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

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

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
}

Đầu vào

1, 1, 2, 2

Đầu ra

4