題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2036
題目要求:
求多邊形面積
思路:

分割
如圖,對(duì)所有相鄰坐標(biāo)點(diǎn)與原點(diǎn)構(gòu)成的三角形進(jìn)行矢量求和即是面積;
由平行四邊形的面積計(jì)算公式可得單個(gè)三角形的面積公式:(x1y2-y1x2)/2;
此題的坐標(biāo)為逆時(shí)針順序,不必取反。
代碼:
#include <stdio.h>
int main()
{
int n, i;
while (scanf("%d", &n) != EOF)
{
if (n == 0) {}
else
{
int x[100], y[100];
double ans = 0;
for (i = 1; i <= n; i++)
{
scanf("%d", &x[i]);
scanf("%d", &y[i]);
}
x[n + 1] = x[1];
y[n + 1] = y[1]; //最后一點(diǎn)與第一點(diǎn)相連
for (i = 1; i <= n; i++)
{
ans += (x[i] * y[i + 1] - y[i] * x[i + 1]) / 2.0; //面積公式
}
printf("%.1f\n", ans);
}
}
}