矩形总面积
试题D:矩形总面积
【问题描述】
平面上有个两个矩形 R 1 和 R 2 ,它们各边都与坐标轴平行。设 ( x 1 , y 1 ) 和
( x 2 , y 2 ) 依次是 R 1 的左下角和右上角坐标, ( x 3 , y 3 ) 和 ( x 4 , y 4 ) 依次是 R 2 的左下
角和右上角坐标,请你计算 R 1 和 R 2 的总面积是多少?
注意:如果 R 1 和 R 2 有重叠区域,重叠区域的面积只计算一次。
【输入格式】
输入只有一行,包含 8 个整数,依次是: x 1 , y 1 , x 2 , y 2 , x 3 , y 3 , x 4 和 y 4 。
【输出格式】
一个整数,代表答案。
【样例输入】
2 1 7 4 5 3 8 6
【样例输出】
22
1 import java.util.Scanner; 2 // 1:无需package 3 // 2: 类名必须Main, 不可修改 4 5 public class Main { 6 public static void main(String[] args) { 7 Scanner scan = new Scanner(System.in); 8 //第一个矩形 9 int x1 = scan.nextInt(); 10 int y1 = scan.nextInt(); 11 int x2 = scan.nextInt(); 12 int y2 = scan.nextInt(); 13 // 第二个矩形 14 int x3 = scan.nextInt(); 15 int y3 = scan.nextInt(); 16 int x4 = scan.nextInt(); 17 int y4 = scan.nextInt(); 18 19 // 相交区域左下角横纵坐标 20 int x = Math.max(x1, x3); 21 int y = Math.max(y1, y3); 22 // 相交区域右上的横纵坐标 23 int x_1 = Math.min(x2, x4); 24 int y_1 = Math.min(y2, y4); 25 long res = 0L; 26 // 判断相交区域的4个点是否在两个矩形之中,其余两个点,用已知的两个表示出来即可。 27 if ((x >= x1 && x <= x2 && y >= y1 && y <= y2)&& 28 (x_1 >= x1 && x_1 <= x2 && y_1 >= y1 && y_1 <= y2)){ 29 x = Math.abs(x_1 - x); 30 y = Math.abs(y - y_1); 31 res = (long) x*y; 32 } 33 long area = (long) Math.abs(x1 - x2) *Math.abs(y1 - y2)+(long)Math.abs(x3 - x4) *Math.abs(y3 - y4) ; 34 System.out.println(area - res); 35 scan.close(); 36 } 37 }
注意看求相交区域