您的位置:首页 > 其它

HDU 2036 改革春风吹满地

2014-10-10 00:02 295 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036

题目大意:给出n个点,求出其围成多边形的面积

题目思路:利用叉乘将多边形分解成多个三角形,并逐一得计算其面积。两向量的叉乘模等于他所对应平行四边形的面积,也就是该三角形的面积。

代码:

#include<iostream>
#include<cstdio>
using namespace std;
#define N 110

typedef struct{
double x,y;
}Point;

double Judge(double x1,double y1,double x2,double y2){
if((x1*y2-x2*y1)<0) return (x1*y2-x2*y1)/2;
return (x1*y2-x2*y1)/2;
}

Point p
;

int main(){
int n;
while(scanf("%d",&n)&&n){
for(int i=0;i<n;i++){
scanf("%lf%lf",&p[i].x,&p[i].y);
}
double area=0;
for(int i=1;i<n-1;i++){
area+=Judge(p[(i)%n].x-p[0].x, p[(i)%n].y-p[0].y, p[(i+1)%n].x-p[0].x, p[(i+1)%n].y-p[0].y);
}
printf("%.1lf\n",area);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: