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

สร้างตัวเลขสามตัวเป็นศูนย์ใน Python


สมมุติว่าเรามีตัวเลขสามตัว ภารกิจคือการนับจำนวนขั้นตอนที่เหมาะสมที่สุดเพื่อทำให้ตัวเลขทั้งหมดเหล่านี้เป็น '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 เป็นเอาต์พุต