สมมุติว่าเรามีตัวเลขสามตัว ภารกิจคือการนับจำนวนขั้นตอนที่เหมาะสมที่สุดเพื่อทำให้ตัวเลขทั้งหมดเหล่านี้เป็น '0'
ตัวอย่าง
อินพุต-1:
a = 4 b = 4 c = 6
ผลลัพธ์:
7
คำอธิบาย:
จำนวนขั้นตอนที่เหมาะสมที่สุดในการทำให้ตัวเลขทั้งหมดเป็น '0' คือ
(4, 4, 6)
การลบ '1' จากตัวเลขที่ 1 และ 2 =(3, 3, 6)
การลบ '1' จากตัวเลขที่ 1 และ 3 =(2, 3, 5)
กำลังลบ '1' จากหมายเลขที่ 1 และ 3 =(1 ,3, 4)
กำลังลบ '1' จากตัวเลขที่ 1 และ 3 =(0 ,3 ,3)
กำลังลบ '1' จากตัวเลขที่ 2 และ 3 =(0 ,2, 2)
กำลังลบ '1' จากตัวเลขที่ 2 และ 3 =(0, 1, 1)
กำลังลบ '1' จากตัวเลขที่ 2 และ 3 =(0, 0, 0)
ดังนั้น จำนวนขั้นตอนทั้งหมดในการทำให้ตัวเลขทั้งหมดเป็นศูนย์คือ '7'
แนวทางการแก้ปัญหานี้
เพื่อแก้ปัญหานี้โดยเฉพาะ เราจะลบ '1' ออกจากตัวเลขสองตัวใดๆ เพื่อให้ผลรวมของตัวเลขสองตัวนี้มากกว่าตัวสุดท้าย ในการค้นหาขั้นตอนขั้นต่ำเพื่อทำให้เป็นศูนย์ เราจะคำนวณจำนวนขั้นตอนขั้นต่ำ
- ใส่ตัวเลขสามตัวเป็นอินพุต
- เรียงลำดับตัวเลขตามลำดับที่เพิ่มขึ้นโดยใช้ เรียงลำดับ
- ตรวจสอบว่าผลรวมของตัวเลขสองตัวน้อยกว่าตัวเลขที่สามหรือไม่ จากนั้นส่งคืนผลรวม
- ในแต่ละครั้ง เราจะลบ '1' ออกจากตัวเลขสองตัวใดๆ ก็ตาม (n1+n2+n3)/2 ขั้นตอนในการทำให้ตัวเลขทั้งหมดเป็น '0'
ตัวอย่าง
def maxScore(a: int, b: int, c: int): a, b, c = sorted((a, b, c)) if a + b < c: return a + b return (a + b + c)//2 a=4 b=4 c=6 print(maxScore(a,b,c))
การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น
ผลลัพธ์
7
สำหรับอินพุตที่กำหนด a=4, b=4 และ c=6 จะใช้เวลาเจ็ดขั้นตอนในการทำให้ตัวเลขทั้งหมดเป็น '0' ดังนั้นโปรแกรมจะคืนค่า 7 เป็นเอาต์พุต