223長方形の領域

1.問題の説明:

2次元平面上に形成された2つの直線の重なりによって形成される総面積を計算します。

図のように、各長方形は左下の頂点と右上の頂点の座標で表されます。

例:

入力:-3、0、3、4、0、-1、9、2出力:45

説明:長方形の領域はintの範囲を超えないと想定されています。

2.思考分析:

①タイトルによると、計算された長方形の総面積が2つのケースに分かれて計算されていることがわかります。1つ目は2つの長方形が重なっていない場合、2つ目は重なっている場合、2つ目は重なっていない場合は直接座標減算です。次に、領域の2つの部分を追加します。重複する状況では、特定の図形を描画して、特定の幾何学的関係を分析および要約する必要があります。

②パーツが重なっている図は次のとおりです。

3.コードは次のとおりです。

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件を公開 153のような 訪問数590,000+

おすすめ

転載: blog.csdn.net/qq_39445165/article/details/105280086