矩形总面积

试题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 }

注意看求相交区域

posted @ 2024-02-29 19:32  小菜碟子  阅读(5)  评论(0编辑  收藏  举报