在 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