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);
		  	}
	    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章