【杭电】[2036]改革春风吹满地

文章字数:200

问题描述

问题分析

求任意多边形的面积
当时还没学叉积什么的

一个小技巧是通过 i+1%n
来让最后一个点与第一个点相连

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
struct node {
	int x,y;
} a[120];
double f(int x1,int y1,int x2,int y2) {
	return double(x1*y2-x2*y1);
}
int main() {
	int n;
	while(scanf("%d",&n),n) {
		for(int i=0; i<n; i++) {
			scanf("%d %d",&a[i].x,&a[i].y);
		}
		double res=0;
		for(int i=0; i<n; i++) {
			res+=f(a[i].x,a[i].y,a[(i+1)%n].x,a[(i+1)%n].y);
		}
		printf("%.1lf\n",res/2.0);
	}
	return 0;
}

参考文章: 任意多边形面积计算 - 专业思考与实践者 任意多边形的面积公式 - 菜头 任意多边形面积的求解 - songgaoyong - ChinaUnix博客

题目地址:【杭电】[2036]改革春风吹满地

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...