题目URL:http://acm.hdu.edu.cn/showproblem.php?pid=2036
题目也没说是凸多边形还是凹多边形,糊里糊涂就A了。
思路是把一个N边形切割成N-2个三角形,然后用向量叉积求三角形的面积。
我的AC代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int x[3], y[3], p;
double sum;
while(scanf("%d", &p) && p)
{
sum = 0;
scanf("%d%d", &x[0], &y[0]);
scanf("%d%d", &x[1], &y[1]);
x[1] -= x[0], y[1] -= y[0];
for(int i=2; i<p; i++)
{
scanf("%d%d", &x[2], &y[2]);
x[2] -= x[0], y[2] -= y[0];
sum += (x[1]*y[2] - y[1]*x[2])/2.0;
x[1] = x[2], y[1] = y[2];
}
printf("%.1lf\n", sum);
}
system("pause");
return 0;
}