杭电OJ2036
这题是一道数学题 记住公式吧 若是不会这个公式 一般做不出来
以一个点为基点,逐个分解三角形
(ad+cf+be-ed-cb-af)/2.0
a,b为起始点坐标 c ,d e,f为选取的三角形另外的两个坐标 带入公式即可
#include<cstdio>
using namespace std;
float cacu(int a,int b,int c,int d,int e,int f){
return (a*d+c*f+b*e-e*d-c*b-a*f)/2.0;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(n==0){
break;
}
int x[100],y[100];
float m=0;
for(int i = 0;i<n;i++){
scanf("%d %d",&x[i],&y[i]);
}
for(int i = 0;i<n-2;i++){
m+=cacu(x[0],y[0],x[i+1],y[i+1],x[i+2],y[i+2]);
}
printf("%.1f\n",m);
}
return 0;
}