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