在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