求多边形面积,集合模版。思路就是把一个多边形分成n个三角形,对三角形求面积,再加一起。
三角形面积用海伦定理。最后结果注意是取整。
#include<bits/stdc++.h>
using namespace std;
typedef struct Point{
double x, y;
Point(){}
} Point;
double polygonarea(vector<Point>&polygon, int N)
{
int i, j;
double area = 0;
for (i = 0; i<N; i++) {
j = (i + 1) % N;
area += polygon[i].x * polygon[j].y;
area -= polygon[i].y * polygon[j].x;
}
area /= 2;
return(area < 0 ? -area : area);
}
int main(){
vector<Point> polygon;
int n;
cin >> n;
polygon.resize(n);
int i = 0;
while (n--){
double x, y;
cin >> x >> y;
polygon[i].x = x;
polygon[i].y = y;
++i;
}
cout <<round(polygonarea(polygon, polygon.size()));
return 0;
}