zoukankan      html  css  js  c++  java
  • POJ 1654 Area 计算几何

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<math.h>
    using namespace std;
    int dx[10]={0,1,1,1,0,0,0,-1,-1,-1};
    int dy[10]={0,-1,0,1,-1,0,1,-1,0,1};
    char s[1000010];
    __int64 area,x,y,px,py;
    int main()
    {
        int sum,t,tmp,i;
        cin>>tmp;
        while(tmp--)
        {
            scanf("%s",s);
            t=strlen(s);
            if(t<3)
            {
                printf("0
    ");
            }    
            else
            {
                area=0;
                x=y=0;
                for(i=0;i<t-1;i++)
                {
                    px=x+dx[s[i]-'0'];
                    py=y+dy[s[i]-'0'];
                    area+=(px*y-x*py);
                    x=px;
                    y=py;
                }
                area=fabs(area);
                if(area%2==0)
                    cout<<area/2<<endl;
                else
                    cout<<area/2<<".5"<<endl;    
            }
        }
        return 0;
    }

    计算几何,让原点和相邻的两个点的坐标进行叉乘,然后累加起来/2就是面积

    由于数据的特殊性质,所有最后%2来判断是否有小数点

  • 相关阅读:
    富文本
    frame,bounds,position,anchorPoint理解
    内存相关
    OpenGL
    Xcode 编译选项详解
    iOS 工程引用
    iOS 事件传递和消息处理
    UICollectionView用法
    数据库
    多线程
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4107943.html
Copyright © 2011-2022 走看看