数学 HDU 2036 改革春风吹满地

原题戳这儿:链接


思路:将多边形切割为多个三角形,进行面积累计求和

算法(三角形万能公式):


设A(x1,y1),B(x2,y2),C(x3,y3) ,由A-->B-->C-->A 按逆时针方向转。 
设三角形的面积为S,则S=(1/2)*(下面行列式) 
|x1 y1 1| 
|x2 y2 1| 
|x3 y3 1| 
S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2) 
即用三角形的三个顶点坐标求其面积的公式为: S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2) 


代码

#include<stdio.h>   
int main()  
{  
    int x[100],y[100],n,i,x1,y1,x2,y2,x3,y3;  
    double s;  
    while(~scanf("%d",&n)&&n)  
    {  
        for(i=s=0;i<n;i++)  
            scanf("%d%d",&x[i],&y[i]);  
        x1=x[0],y1=y[0];  
        for(i=1;i<n-1;i++)  
        {  
            x2=x[i],y2=y[i];  
            x3=x[i+1],y3=y[i+1];  
            s+=(double)(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2.0;  
        }  
        printf("%.1f\n",s);  
    }  
    return 0;  
} 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值