在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

以上是 在Python中找到大小为N的圆环中距整数点到A和B的最小距离之和 的全部内容, 来源链接: utcz.com/z/338438.html

回到顶部