题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036
该题的思路:
重点在于计算多边形面积的方法,我用的方法是二阶行列式,由于题目本身给的条件就是逆顺序所以最后的答案无需在进行换算,做法为:将相邻的两个顶点做二阶行列式,最后的一个顶点和第一个顶点做行列式,在将所有行列式相加乘于二分之一
具体公式为:
最终代码为:
#include<stdio.h>
int main()
{
int n, i, j, sum;
double s;
int a[100][2]; //将二维数组作为存放x,y的值
while(scanf("%d", &n) != EOF)
{
if(n>=3 && n<=100)
{
sum = 0;
for(i=0;i<n;i++) //此处开始对n个坐标赋值
{
for(j=0;j<2;j++)
{
scanf("%d", &a[i][j]);
}
}
for(i=0;i<n-1; i++)
{
sum += a[i][0]*a[i+1][1]-a[i+1][0]*a[i][1]; //计算n--2个行列式的值并将他们相加
}
sum = sum + (a[n-1][0]*a[0][1]-a[0][0]*a[n-1][1]); // 将最后一个行列式加入进去
s = 0.5*sum; //计算面积
printf("%.1lf\n", s);
}
}
}
另外还有最近做题的一些需要注意的问题
1.在oj计算中,最后的结果不能有空格,或者缺少回车符等问题
2.当在条件为输入多组数据时,可以用while(scanf() != EOF)的方法,要是有约束条件可以在里面进行约束
3.要细心再细心