现在的位置: 首页 > 综合 > 正文

HDU 2306改革春风吹满地

2019年02月26日 ⁄ 综合 ⁄ 共 538字 ⁄ 字号 评论关闭

题目链接~~>

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

(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 ;
}

 

抱歉!评论已关闭.