【暑期基础2】K HDU 2036 改革春风吹满地(多边形面积)

来源:互联网 发布:matlab编程入门教程pdf 编辑:程序博客网 时间:2024/04/27 15:21

题意

已知 n 边形的 n 个定点的坐标,求这个 n 边形的面积。


思路

任意一个 n 边形都可以细分为多个小三角形,根据三角形的定点坐标求面积,可以参考百度文库的《 已知三点坐标,求三角形面积 》一文。


AC 代码 *

#include <stdio.h>#define MAX 105int x[MAX], y[MAX];float area(int c, int d, int e, int f) {    int a = x[0];    int b = y[0];    return ( a * d + c * f + b * e - e * d - c * b - a * f ) / 2.0;}int main() {    int n, i;    float sum;    while ( scanf("%d", &n) != EOF && n) {        sum = 0;        for ( i = 0; i < n; i++) {            scanf("%d%d", &x[i], &y[i]);            }        for( i = 0; i < n - 2; i++){              sum += area(x[i+1], y[i+1], x[i+2], y[i+2]);          }        printf("%.1f\n", sum);    }    return 0;}

* 注:在 HUST 的 Virtual Judge 上测试 AC

0 0
原创粉丝点击