题目与示例
题目
题目内容
给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。
来源:力扣(LeetCode)
示例 1:
输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
输出: 2
解释:这五个点如下图所示。组成的橙色三角形是最大的,面积为2。
一、思路
我们利用海伦公式来求解此题,使用暴力算法进行搜索,最后返回面积最大的三角形面积即可
二、解题代码
解题代码如下:
class Solution {
public:
double Area(int x1, int x2, int x3, int y1, int y2, int y3) {
double a = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
double b = sqrt(pow(x2 - x3, 2) + pow(y2 - y3, 2));
double c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
double p = (a + b + c) / 2;
double area = sqrt(p * (p - a) * (p - b) * (p - c));
return area;
}
double largestTriangleArea(vector<vector<int>>& points) {
double res = 0.0;
for(int i = 0; i < points.size(); i++){
for(int j = 0; j < i; j++){
for(int k = 0; k < j; k++){
int x1 = points[i][0];
int y1 = points[i][1];
int x2 = points[j][0];
int y2 = points[j][1];
int x3 = points[k][0];
int y3 = points[k][1];
res = max(res, Area(x1,x2,x3,y1,y2,y3));
}
}
}
return res;
}
};
注:以上部分内容源自力扣,解题方法为个人想法,如有错误还请大家指正