首页 > 代码库 > POJ 1654 Area 计算几何

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\n");        }            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来判断是否有小数点

POJ 1654 Area 计算几何