HDU 2306改革春风吹满地

来源:互联网 发布:作风整顿优化发展环境 编辑:程序博客网 时间:2024/04/29 19:55

题目链接~~>

                   这题求的是任意多边形的面积。

(1).用向量叉乘:A(x1,y1), B(x2,y2) , C(x3,y3) . AB(x2-x1,y2-y1),AC(x3-x1,y3-x3)  然后求ABxAC(求AB AC的行列式)然后将结果的绝对值除以2.

          求多边形面积不用绝对值。

(2).补充:海伦公式:AB=a BC =b AC=c p=(a+b+c)/2   面积S=sqrt(p*(p-a)*(p-b)*(p-c)).

代码:

#include<stdio.h>#include<math.h>int main(){    int n ;    int x1,x2,x3,y1,y2,y3 ;    while(scanf("%d",&n)!=EOF)     {         if(n==0)              break ;         scanf("%d%d%d%d",&x1,&y1,&x2,&y2) ;         double sum=0 ;         for(int i=2;i<n;i++)          {              scanf("%d%d",&x3,&y3);              sum=(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1);              printf("%.1lf\n",sum) ;              x2=x3 ;              y2=y3 ;          }        printf("%.1lf\n",sum/2.0) ;     }     return 0 ;}