本文主要是介绍HDU 2036 计算多边形面积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
计算多边形面积,这个题目比较简单,练习一下多边形面积的求法
就是从第一个顶点开始,顺序连接顺序的两个顶点求三角形面积
这里有个问题,如果是凸多边形,一看就知道这个算法是正确的
但是如果不是凸多边形呢,其实这个结论还是正确的,因为计算
多出来的负的面积,和计算多出来的正的面积会正好抵消,这个
结论话画个图演示一下就OK了!
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct point
{double x;double y;
}po[200];
double xmult(point &a,point &b,point &c)
{return (b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y);
}
double cal_p_area(int n)
{int i,j,k;double ans;for(i=1;i<n-1;i++){ans+=xmult(po[0],po[i],po[i+1]);}return ans;
}
int main()
{int i,j,k,n;while(scanf("%d",&n),n){for(i=0;i<n;i++)scanf("%lf%lf",&po[i].x,&po[i].y);printf("%.1lf\n",cal_p_area(n)/2);}return 0;
}
这篇关于HDU 2036 计算多边形面积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!