สมมติว่าเรามีจำนวนอาร์เรย์ที่มีความยาวเป็นบวก เราต้องหาเส้นรอบรูปที่ใหญ่ที่สุดของสามเหลี่ยมโดยนำค่าสามค่าจากอาร์เรย์นั้นมา เมื่อเป็นไปไม่ได้ที่จะสร้างสามเหลี่ยมใดๆ ของพื้นที่ที่ไม่ใช่ศูนย์ ให้คืนค่า 0
ดังนั้น หากอินพุตเป็น [8,3,6,4,2,5] ผลลัพธ์จะเป็น 19
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
เรียงเลขรายการ
-
a :=ลบองค์ประกอบสุดท้ายออกจาก nums
-
b :=ลบองค์ประกอบสุดท้ายออกจาก nums
-
c :=ลบองค์ประกอบสุดท้ายออกจาก nums
-
ในขณะที่ b+c <=a ทำ
-
ถ้าไม่ใช่ nums ก็ไม่ใช่ศูนย์ แล้ว
-
คืนค่า 0
-
-
a :=b
-
b :=c
-
c :=ลบองค์ประกอบสุดท้ายออกจาก nums
-
-
คืนค่า a+b+c
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def solve(nums): nums.sort() a, b, c = nums.pop(), nums.pop(), nums.pop() while b+c<=a: if not nums: return 0 a, b, c = b, c, nums.pop() return a+b+c nums = [8,3,6,4,2,5] print(solve(nums))
อินพุต
[8,3,6,4,2,5]
ผลลัพธ์
19