在 Python 中,求出从大小为 N 的环中任意整数点到 A 和 B 的最小距离和

pythonserver side programmingprogramming

假设我们有一个环,它由从 1 到 N 的几个数字组成。我们还有两个数字 A 和 B。现在,我们可以站在任意位置(比如 x)并针对距离的总和执行计数操作(比如 Z = 从 X 到 A 的距离 + 从 X 到 B 的距离)。我们必须选择 X 以使 Z 最小化。最后返回 Z 的值。我们必须记住,X 不会与 A 和 B 相同。

因此,如果输入为 N = 30、A = 10、B = 20,则输出将为 10,因为选择 X = 15,从 X 到 A 的距离为 5,从 X 到 B 的距离为 5。因此,总距离 = 5 + 5 = 10。

为了解决这个问题,我们将遵循以下步骤 −

  • if a > b 非零,则

    • 交换 a 和 b

  • clock_wise_dist := b - a

  • counter_clock_wise_dist :=(a - 1) +(n - b + 1)

  • minimum_dist := clock_wise_dist, counter_clock_wise_dist 的最小值

  • 如果 minimum_dist 与 1 相同,则

    • 返回 3

  • 返回 minimum_dist

示例

让我们看看下面的实现以便更好地理解 −

def get_min_z(n, a, b):
   if (a > b):
      a, b = b, a
   clock_wise_dist = b - a
   counter_clock_wise_dist = (a - 1) + (n - b + 1)
   minimum_dist = min(clock_wise_dist, counter_clock_wise_dist)
   if (minimum_dist == 1):
      return 3
   return minimum_dist
n = 30
a = 10
b = 20
print(get_min_z(n, a, b))

输入

30, 10, 20

输出

10

相关文章