您的位置:首页 > 其它

hdu 2036 改革春风吹满地

2013-05-19 12:23 316 查看
 

向量叉积求三角形面积公式:

A,B,C为三角形的三个点,向量AB,向量AC

S(A,B,C)=abs(AB×AC)/2;

然后,可以扩展到以原点为起始点,相邻两个点位终点,求出来的面积是有方向的。。。

 

#include<iostream>
using namespace std;

int main()
{
int n;
while(scanf("%d",&n)==1&&n)
{
float s=0;
int x0,y0;
int px,py,nx,ny;   //前一个点,与后一个点
scanf("%d %d",&px,&py);
x0=px,y0=py;   //因为要计算到第一个点,所以要保存起来
for(int i=1;i<n;i++)
{
scanf("%d %d",&nx,&ny);
s+=(px*ny-nx*py)*1.0/2;
px=nx,py=ny;
}
s+=(nx*y0-x0*ny)*1.0/2;  //计算最后一个与第一个点的面积
printf("%.1f\n",s);
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu