hdu2036改革春风吹满地

题目链接
大意是求多边形的面积,可以采用将多边形拆成多个三角形求解面积。
n个顶点可以得到n-2个三角形。计算面积方法为:
*已知三角形坐标A(x1,y1),B(x2,y2),C(x3,y3)
三角形的面积为S ,S=(1/2) * (x1y2 * 1+x2y3 * 1+x3y1 * 1-x1y3 * 1-x2y1 * 1-x3y2 1)

我们可以固定一个点,来将多边形进行拆分成多个三角形来计算
如图为五边形,选取左下为定点进行计算
如图为五边形,选取左下为定点进行计算
代码如下:

#include <iostream>
#include<stdio.h>
using namespace std;
struct triangle
{
	int x;
	int y;
}a[100];
double f(int x, int y, int x1, int y1, int x2, int y2)
{
	return (x * y1 + x1 * y2 + x2 * y - x * y2 - y * x1 - x2 * y1) / 2.0;
}
int main()
{
	int n;
	while (cin >> n)
	{
		if (n == 0) break;
		for (int i = 0;i < n;i++)
		{
			cin >> a[i].x >> a[i].y;
		}
		double area = 0;
		for (int i = 1;i < n - 1;i++)
		{
			area += f(a[0].x, a[0].y, a[i].x, a[i].y, a[i + 1].x, a[i + 1].y);
		}
		printf("%.1lf\n", area);
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值