标签:lib 使用 习题 return img 解答 clu markdown image
时间限制:1000ms 内存限制:65536kb
通过率:107/134 (79.85%)
正确率:107/319 (33.54%)
按顺时针或逆时针顺序输入一个简单多边形的每个顶点坐标,求这个多边形的面积。
在几何形状中,简单多边形是由直线,非相交的线段或“边”组成的扁平形状,其成对连接以形成封闭路径。(百度百科)
第一行一个整数nn,表示顶点数
接下来n行,每行22个整数x,yx,y表示一个顶点坐标
对于每组数据,输出一行,一个浮点数表示面积(保留7位小数)
3
0 0
100 100
100 0
5000.0000000
3≤n≤1000003≤n≤100000
0≤x,y≤200
#我的一点思路,不知道对不对:使用向量叉乘计算面积;
for example:S△ABC=0.5*|a×b|;
以下是代码:
#include <stdio.h>
#include <stdlib.h>
int main( ){
int i,j,n;
double s=0;
double a[15][2];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<2;j++)
scanf("%lf",&a[i][j]);
for(i=1;i<n;i++)
for(j=0;j<2;j++)
a[i][j]=a[i][j]-a[0][j];
for(i=1;i<n-1;i++){
s = s + 0.5* ( a[i][0] *a[i+1][1] - a[i+1] [0] * a[i][1] );
}
s=s>0?s:-s;
printf("%.7lf",s);
return 0;
}
我的一点疑问:为什么最后s会出现负值呢?虽然说我增加了一个判断条件判断s是否大于零可以让这道题AC,但是这个正负号反映出来的几何问题我真的不是很明白……
如果能有人解答,再感谢不过!!
标签:lib 使用 习题 return img 解答 clu markdown image
原文地址:https://www.cnblogs.com/life-blog-of-Dolly/p/11922008.html