杭电acm的一道题,不知道自己错在哪,求助

2024年11月16日 14:24
有1个网友回答
网友(1):

#include
#include
int main()
{
int n,i,x[101],y[101],x1,x2,y1,y2;
double s;
while((scanf("%d",&n)!=EOF)&&n!=0)
{
for(i=0;i{
scanf("%d%d",&x[i],&y[i]);
}
s=0;
for(i=1;i{
x1=x[i]-x[0];
y1=y[i]-y[0];
x2=x[i+1]-x[0];
y2=y[i+1]-y[0];
s=s+(x1*y2-x2*y1)/2.0; // 三角形面积:AB×AC叉乘
}
printf("%.1lf\n",fabs(s));
}
return 0;
}

把x、y的坐标分别用一维数组表示,比你用二维的简单。
把多边形分割成三角形,求三角形面积,然后相加起来就是多边形面积。
不懂可追问。