关闭

基础练习 BASIC-18 矩形面积交

标签: java数据结构算法蓝桥杯
35人阅读 评论(0) 收藏 举报
分类:
问题描述
  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入格式
  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
  输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
1 1 3 3
2 2 4 4
样例输出
     1.00

import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		double[] temp1 = new double[4];
		double[] temp2 = new double[4];
		double[] rect1 = new double[4];
		double[] rect2 = new double[4];

		for (int i = 0; i < 4; i++) {
			temp1[i] = scanner.nextDouble();
		}

		for (int i = 0; i < 4; i++) {
			temp2[i] = scanner.nextDouble();
		}
		rect1[0] = Math.min(temp1[0], temp1[2]);
		rect1[1] = Math.min(temp1[1], temp1[3]);
		rect1[2] = Math.max(temp1[0], temp1[2]);
		rect1[3] = Math.max(temp1[1], temp1[3]);

		rect2[0] = Math.min(temp2[0], temp2[2]);
		rect2[1] = Math.min(temp2[1], temp2[3]);
		rect2[2] = Math.max(temp2[0], temp2[2]);
		rect2[3] = Math.max(temp2[1], temp2[3]);

		double[] rect = new double[4];
		rect[0] = Math.max(rect1[0], rect2[0]);
		rect[1] = Math.max(rect1[1], rect2[1]);
		rect[2] = Math.min(rect1[2], rect2[2]);
		rect[3] = Math.min(rect1[3], rect2[3]);

		double area = 0;
		if (rect[0] >= rect[2]) {
			System.out.printf("%.2f", area);
		} else {
			area = (rect[2] - rect[0]) * (rect[3] - rect[1]);
			System.out.printf("%.2f", area);
		}
	}
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7688次
    • 积分:1447
    • 等级:
    • 排名:千里之外
    • 原创:143篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条