zoukankan      html  css  js  c++  java
  • hdu2036

    这是一道计算几何题目,用三小型分割多边形来求。开始我还比较迷糊,还想着考虑这考虑那,后来我发现根本不用考虑凹凸多边形的区别问题,因为有正有负,加起来结果必然是非负的。所以根本不用考虑那么多直接搞就行!或许在第n个点的时候要加到结果上的值是负的,但是在n+1,n+2...或者n+k个点的时候这个结果一定会补救回来,描述不太好描述,画个图理解理解就好了。挺好的题目。

     1 #include <stdio.h>
     2 struct point{
     3     int x,y;
     4 };
     5 struct vec{
     6     int x,y;
     7 };
     8 int mul_vec(vec a,vec b){
     9     return a.x*b.y - b.x*a.y;
    10 }
    11 double cal_vec(vec a,vec b){
    12     return (double)mul_vec(a,b)/2.0;
    13 }
    14 int main(){
    15     int n,i;
    16     point t[200],t1,t2,t3;
    17     vec v1,v2;
    18     double res;
    19     while(~scanf("%d",&n)&&n){
    20         res=0;
    21         for(i=1;i<=n;++i){
    22             scanf("%d%d",&t[i].x,&t[i].y);
    23         }
    24         t1=t[1];    t2=t[2];
    25         t[n+1]=t[1];
    26         for(i=3;i<=n+1;++i){
    27             t3=t[i];
    28             v1.x=t2.x-t1.x; v1.y=t2.y-t1.y;
    29             v2.x=t3.x-t2.x; v2.y=t3.y-t2.y;
    30             res+=(double)cal_vec(v1,v2);
    31             t2=t3;
    32         }
    33         printf("%.1lf
    ",res);
    34     }
    35     return 0;
    36 
    37 
    38 }
  • 相关阅读:
    java进阶(36)--IO和Properties联合使用(配置文件)
    java进阶(34)--File类、目录复制
    java进阶(33)--IO流
    java进阶(32)--Collections工具类
    java进阶(31)--TreeSet集合、TreeMap集合、自平衡二叉树
    解决Excel打开空白或慢的问题
    CCS
    CCS
    CCS
    CCS
  • 原文地址:https://www.cnblogs.com/symons1992/p/3403750.html
Copyright © 2011-2022 走看看