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

พื้นที่สามเหลี่ยมที่ใหญ่ที่สุดใน Python


สมมติว่าเรามีรายการคะแนนบนเครื่องบิน เราต้องหาพื้นที่ของสามเหลี่ยมที่ใหญ่ที่สุดที่สามารถเกิดขึ้นได้จากจุดใดก็ได้ 3 จุด

ดังนั้น หากอินพุตเป็น [[0,0],[0,1],[1,0],[0,2],[2,0]] เอาต์พุตจะเป็น 2

พื้นที่สามเหลี่ยมที่ใหญ่ที่สุดใน Python

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • res :=0
  • N :=ขนาดของรายการคะแนน
  • สำหรับฉันในช่วง 0 ถึง N - 2 ให้ทำ
    • สำหรับ j ในช่วง i + 1 ถึง N - 1 ทำ
      • สำหรับ k ในช่วง i + 2 ถึง N ทำ
        • (x1, y1) :=คะแนน[i],
        • (x2, y2) :=คะแนน[j],
        • (x3, y3) :=คะแนน[k]
        • res :=สูงสุดของความละเอียด 0.5 * |x1 *(y2 - y3) + x2 *(y3 - y1) + x3 *(y1 - y2)
  • ผลตอบแทน

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

ตัวอย่าง

class Solution:
   def largestTriangleArea(self, points):
      res = 0
      N = len(points)
      for i in range(N - 2):
         for j in range(i + 1, N - 1):
            for k in range(i + 2, N):
               (x1, y1), (x2, y2), (x3, y3) = points[i],points[j],points[k]
               res = max(res, 0.5 * abs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)))
      return res
ob = Solution()
print(ob.largestTriangleArea([[0,0],[0,1],[1,0],[0,2],[2,0]]))

อินพุต

[[0,0],[0,1],[1,0],[0,2],[2,0]]

ผลลัพธ์

2.0