Computer >> Máy Tính >  >> Lập trình >> Python

Tìm tổng khoảng cách tối thiểu đến A và B từ bất kỳ điểm số nguyên nào trong một vòng có kích thước N bằng Python


Giả sử chúng ta có một chiếc nhẫn gồm vài số từ 1 đến N. Chúng ta cũng có các số kéo A và B. Bây giờ, chúng ta có thể đứng ở bất kỳ vị trí nào (giả sử x) và thực hiện phép tính đếm đối với tổng khoảng cách (giả sử Z =khoảng cách từ X đến A + khoảng cách từ X đến B). Chúng ta phải chọn X sao cho Z là cực tiểu. Cuối cùng, trả về giá trị của Z. Chúng ta phải lưu ý rằng X sẽ không giống với A và B.

Vì vậy, nếu đầu vào là N =30, A =10, B =20, thì đầu ra sẽ là 10 khi chọn X =15, khoảng cách từ X đến A là 5 và khoảng cách từ X đến B là 5. Vậy tổng quãng đường =5 + 5 =10.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu a> b khác 0 thì

    • hoán đổi a và b

  • clock_wise_dist:=b - a

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

  • Minim_dist:=tối thiểu clock_wise_dist, counter_clock_wise_dist

  • nếu Minimum_dist giống 1, thì

    • trả về 3

  • trả về danh sách tối thiểu

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

30, 10, 20

Đầu ra

10