C++ 代码查找兔子拉箱子的总时间

假设我们有两个坐标 (x1, y1) 和 (x2, y2)。一只兔子正在拉食物盒。他用一根只有一根单位大小的绳子的绳子连接着。兔子将箱子拉到它站立的位置,然后向同一方向移开 1 个单位。兔子可以在不拉箱子的情况下向右、向左、向上或向下移动 1 个单位。在这种情况下,它没有必要与盒子恰好相距 1 个单位。如果他想再次拉箱子,它必须到箱子旁边的一点。兔子可以在任何时候开始。向任何方向移动 1 个单位需要 1 秒。我们必须找到将盒子从起始位置移动到结束位置所需的最短时间。

所以,如果输入像 x1 = 1; y1 = 1; x2 = 2; y2 = 2,那么输出将是 4,因为 Rabbit 可以从点 (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

以上是 C++ 代码查找兔子拉箱子的总时间 的全部内容, 来源链接: utcz.com/z/297459.html

回到顶部