สมมติว่าเรามีอาร์เรย์ของจำนวนบวก มี n องค์ประกอบในอาร์เรย์นั้น เราต้องหาผลรวมสูงสุดของแฝดสาม (ai + aj + ak ) เพื่อให้ 0 <=i
ดังนั้น หากอินพุตเป็น A =[3,6,4,2,5,10] ผลลัพธ์จะเป็น 19 เนื่องจากแฝดสาม (3 4 5):sum =12, (3 6 10):sum =19, (3 4 10):ผลรวม =17, (4 5 10):ผลรวม =19, (2 5 10):ผลรวม =17. ดังนั้นสูงสุดคือ 19
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ A
-
res :=0
-
สำหรับฉันอยู่ในช่วง 1 ถึง n - 1 ทำ
-
ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def get_max_triplet_sum(A) : n = len(A) res = 0 for i in range(1, (n - 1)) : first_max = 0 second_max = 0 for j in range(0, i) : if (A[j] < A[i]) : first_max = max(first_max, A[j]) for j in range((i + 1), n) : if (A[j] > A[i]) : second_max = max(second_max, A[j]) if (first_max and second_max): res = max(res, first_max + A[i] + second_max) return res A = [3,6,4,2,5,10] print(get_max_triplet_sum(A))
อินพุต
[3,6,4,2,5,10]
ผลลัพธ์
19