首页 > 代码库 > 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 计算几何
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。