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

โปรแกรมหาจำนวนการดำเนินการน้อยสุดแปลง start เป็น end ใน Python

มี start < end ทำได้ 2 อย่าง: +1 หรือ ×2 หาจำนวนขั้นตอนน้อยสุดจาก start ถึง end

ตัวอย่าง: start=5, end=11 → 2 (5×2=10, +1=11)

อัลกอริธึมย้อนกลับ (Greedy)

  • จาก end ย้อนกลับ: ถ้าคี่ → -1 แล้ว /2 (2 ขั้น), ถ้าคู่ → /2 (1 ขั้น)
  • ทำจนกว่า end/2 < start แล้วบวก (end - start) เข้าไป

การนำไปใช้

class Solution:
    def solve(self, start, end):
        ct = 0
        while end / 2 >= start:
            if end % 2 == 1:
                end -= 1
                end //= 2
                ct += 2
            else:
                end //= 2
                ct += 1
        ct += (end - start)
        return ct

ob = Solution()
print(ob.solve(5, 11))  # 2