在Python中找到大小为N的圆环中距整数点到A和B的最小距离之和

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

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

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

  • 如果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
猜你喜欢