1. 程式人生 > >Java——區域內點的個數

Java——區域內點的個數

區域內點的個數
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description
X晚上睡不著的時候不喜歡玩手機,也不喜歡打遊戲,他喜歡數星星。

Input
多組輸入。
每組先輸入一個整數N(N <= 10000),接著輸入兩個點代表矩形的左下點B(x,y)和右上點T(x,y),然後輸入N個(X,Y)代表N顆星星。問有多少顆星星在窗子內部,在窗邊上的不計。

Output
輸出一個整數,代表有多少顆星星在窗子內部。

Sample Input
3
0 1
3 4
1 1
2 2
3 3

Sample Output
1

AC程式碼:

import java.util.Scanner;

class Point {
	int x, y;

	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}
}

class Rect {
	Point p1, p2;

	public Rect(Point x, Point y) {
		p1 = x;
		p2 = y;
	}

	public boolean panduan(Point p) {  //判斷點是否在矩形內
		if (p.x > p1.x && p.x < p2.x && p.y > p1.y && p.y < p2.y) {
			return true;
		} else {
			return false;
		}
	}
}

public class Main {
	public static void main(String[] args) {
		Scanner mi = new Scanner(System.in);
		while (mi.hasNext()) {
			int n = mi.nextInt();
			Point p1 = new Point(mi.nextInt(), mi.nextInt());
			Point p2 = new Point(mi.nextInt(), mi.nextInt());
			Rect rect = new Rect(p1, p2);
			int count = 0;
			while (n-- > 0) {
				Point p = new Point(mi.nextInt(), mi.nextInt());
				if (rect.panduan(p)) {
					count++;
				}
			}
			System.out.println(count);
		}
		mi.close();
	}
}

——————
餘生還請多多指教!