算法->两正方形共占的面积
解法:
两正方形占面积 — 重叠部分面积
重叠部分计算:
// 计算重叠的横边长度int x = Math.min(a + v1, c + v2) - Math.max(a, c); // 小的右顶点 - 大的左顶点 = 重合的横边// 计算重叠的纵边长度int y = Math.min(b, d) - Math.max(b - v1, d - v2); // 小的上顶点 - 大的下顶点 = 重合的纵边
// 计算重叠面积v = x * y; // 重叠的面积
例题:
import java.util.Scanner;public class Main {public static void main(String[] args) {// 定义变量int a, b, c, d, v1, v2;// 输入六个整数Scanner scanner = new Scanner(System.in);a = scanner.nextInt();b = scanner.nextInt();c = scanner.nextInt();d = scanner.nextInt();v1 = scanner.nextInt();v2 = scanner.nextInt();// 初始化重叠面积变量int v = 0;// 计算重叠的横边长度int x = Math.min(a + v1, c + v2) - Math.max(a, c); // 小的右顶点 - 大的左顶点 = 重合的横边// 计算重叠的纵边长度int y = Math.min(b, d) - Math.max(b - v1, d - v2); // 小的上顶点 - 大的下顶点 = 重合的纵边// 计算重叠面积v = x * y; // 重叠的面积// 判断是否有重叠部分if (x > 0 && y > 0) {// 如果有重叠,输出总面积减去重叠面积System.out.println(v1 * v1 + v2 * v2 - v);} else {// 如果没有重叠,输出两个矩形的总面积System.out.println(v1 * v1 + v2 * v2);}// 关闭扫描器scanner.close();}
}