Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาผลรวมระยะทางขั้นต่ำไปยัง A และ B จากจุดบนวงกลมขนาด N ใน Python

สมมติว่าเรามีวงกลมที่ประกอบด้วยตัวเลข 1 ถึง N และมีตัวเลข A และ B เราสามารถยืนที่จุดใดก็ได้ (x) และคำนวณผลรวมระยะทาง Z = ระยะทางจาก x ไป A + ระยะทางจาก x ไป B เราต้องเลือก x ให้ Z น้อยที่สุด โดย x ไม่สามารถเป็น A หรือ B ได้ คืนค่า Z ที่น้อยที่สุด

เช่น N = 30, A = 10, B = 20 ผลลัพธ์คือ 10 โดยเลือก x = 15 ระยะทางไป A = 5, ไป B = 5 รวม = 10

ขั้นตอนการแก้ปัญหา

  1. ถ้า a > b ให้สลับค่า
  2. คำนวณระยะทางตามเข็มนาฬิกา clock_wise_dist = b - a
  3. คำนวณระยะทางทวนเข็มนาฬิกา counter_clock_wise_dist = (a - 1) + (n - b + 1)
  4. หา minimum_dist = min(clock_wise_dist, counter_clock_wise_dist)
  5. ถ้า minimum_dist == 1 คืนค่า 3 มิฉะนั้นคืนค่า minimum_dist

ตัวอย่างโค้ด Python

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