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

Largest Triangle Area ใน Python: หาพื้นที่สามเหลี่ยมมากที่สุดจากจุดบนพื้นที่

ได้รับรายการจุดบนระนาบ 2 มิติ ต้องการหาพื้นที่ของสามเหลี่ยมที่ใหญ่ที่สุดที่สามารถสร้างได้จากจุดใด ๆ 3 จุด

ตัวอย่าง

points = [[0,0],[0,1],[1,0],[0,2],[2,0]] → พื้นที่มากที่สุด = 2.0

ขั้นตอนการแก้ปัญหา

  1. ใช้สูตรพื้นที่สามเหลี่ยมจากพิกัด 3 จุด:
    Area = 0.5 * |x1(y2-y3) + x2(y3-y1) + x3(y1-y2)|
  2. วนทุกชุดของ 3 จุด (Triple nested loop)
  3. คำนวณพื้นที่ เก็บค่าสูงสุด
  4. คืนค่าพื้นที่สูงสุด

การติดตั้งใน Python

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(j + 1, N):
                    (x1, y1), (x2, y2), (x3, y3) = points[i], points[j], points[k]
                    area = 0.5 * abs(x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2))
                    res = max(res, area)
        return res

ob = Solution()
print(ob.largestTriangleArea([[0,0],[0,1],[1,0],[0,2],[2,0]]))  # 2.0

อินพุต / เอาต์พุต

Input: [[0,0],[0,1],[1,0],[0,2],[2,0]]
Output: 2.0