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

ค้นหาผลรวมสูงสุดของแฝดสามในอาร์เรย์เช่น i

สมมติว่าเรามีอาร์เรย์ของจำนวนบวก มี 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 ทำ

    • first_max :=0, วินาที_max :=0

    • สำหรับ j ในช่วง 0 ถึง i ทำ

      • ถ้า A[j]

        • first_max :=สูงสุดของ first_max, A[j]

    • สำหรับ j ในช่วง i + 1 ถึง n ทำ

      • ถ้า A[j]> A[i] แล้ว

        • second_max :=สูงสุดของวินาที_max, A[j]

    • ถ้า first_max และ second_max ไม่ใช่ศูนย์ ดังนั้น

      • res :=สูงสุดของ res, first_max + A[i] + วินาที_max

  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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