POJ Problem 3910 Build Your Home

给定多边形的各个顶点,求该多边形的面积。

选多边形的任意一个顶点作为原点,它与任意相邻的两个顶点可构成一个三角形,而三角形面积可由三个顶点构成的两个平面向量的外积求得。任意多边形的面积公式为:




import java.io.*;
import java.lang.Math;
import java.util.Scanner;

class Point{
	public double x, y;
	Point(double a, double b){
		 x = a;
		 y = b;
	}
}
public class beta {
	  public static void main(String args[]) {
		  	Scanner in = new Scanner(System.in);
		  	while(in.hasNext()){
		  		int n = in.nextInt();
		  		if(n == 0) break;
		  		Point []p = new Point[n];
		  		for(int i = 0; i < n; ++i){
		  			double a = in.nextDouble();
		  			double b = in.nextDouble();
		  			p[i] = new Point(a, b);
		  		}
		  		double area = 0.0;
		  		for(int i = 0; i < n-1; ++i){
		  			area +=  (p[i].x - p[0].x)*(p[i+1].y - p[0].y)-(p[i].y - p[0].y)*(p[i+1].x-p[0].x);
		  		}
		  		area = Math.abs(area)*0.5;
		  		int ans = (int)area;
		  		if(area - ans < 0.5) System.out.println(ans);
		  		else System.out.println(ans + 1);
		  	}
	    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值