223 área rectangular

1. Descripción del problema:

Calcule el área total formada por la superposición de dos líneas rectas formadas en un plano bidimensional.

Cada rectángulo está representado por las coordenadas de su vértice inferior izquierdo y el vértice superior derecho, como se muestra.

Ejemplo:

Entrada: -3, 0, 3, 4, 0, -1, 9, 2 Salida: 45

Explicación: Se supone que el área rectangular no excederá el rango de int.

2. Análisis de pensamiento:

① De acuerdo con el título, sabemos que el área total del rectángulo calculado se divide en dos casos para el cálculo. El primer caso es el caso donde los dos rectángulos no se superponen, el segundo caso es el caso donde hay superposición, y para el caso donde no hay superposición, la resta de coordenadas directas Luego agregue las dos partes del área. Para situaciones superpuestas, necesita dibujar una figura específica para analizar y resumir la relación geométrica específica

Diagram El diagrama con partes superpuestas es el siguiente:

3. El código es el siguiente:

import java.util.Scanner;
public class Solution {
   public static int computeArea(int A, int B, int C, int D, int E, int F, int G, int H){
        /*未重叠部分*/
        int total = (C - A) * (D - B) + (G - E) * (H - F);
        if (H <= B || C <= E || G <= A || D <= F) return total;
        /*重叠部分*/
        int downX = Math.max(A, E);
        int upX = Math.min(G, C);
        int downY = Math.max(B, F);
        int upY = Math.min(D, H);
        return total - (upX - downX) * (upY - downY);
    }
}

 

569 artículos originales publicados · Me gusta 153 · Visitas 590,000+

Supongo que te gusta

Origin blog.csdn.net/qq_39445165/article/details/105280086
Recomendado
Clasificación