基礎訓練 矩形面積交

2021-10-03 12:22:51 字數 1716 閱讀 2506

最開始我是分情況討論各種相交的情況,發現判斷語句寫的非常繁瑣,容易漏掉情況。其實這道題最簡單的做法是:

(1)找出不相交的通用判斷方法

當乙個矩形的橫(縱)座標的最大值小於另一矩形橫(縱)座標的最小值時,不相交

(2)找出相交情況面積的通用計算方法

相交的形狀是個長方形,因此只需要計算長和寬。計算長:將四個橫座標公升序排序,第三個減去第二個;同樣的方法計算寬。

完成上面兩步,我們的程式設計邏輯就會變得非常清晰,乙個if/else判斷語句即可實現。

平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。

輸入僅包含兩行,每行描述乙個矩形。

在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10^7的實數表示。

輸出僅包含乙個實數,為交的面積,保留到小數後兩位。

1 1 3 3

2 2 4 4

1.00

程式清單:

#include

#include

using

namespace std;

intmain()

return0;

}

這裡也提供另一種方法,原理和上面一樣。

#include

#include

#include

using

namespace std;

intmain()

;double b[4]

=;for(

int i=

0;i<

4;i++

)//輸入矩形a

cin>>a[i]

;for

(int i=

0;i<

4;i++

)//輸入矩形b

cin>>b[i]

;double x[4]

=;//將所有的橫座標存入陣列x,等待排序

double y[4]

=;//將所有的縱座標存入陣列y,等待排序

double max_ax=

max(a[0]

,a[2])

;double max_ay=

max(a[1]

,a[3])

;double max_bx=

max(b[0]

,b[2])

;double max_by=

max(b[1]

,b[3])

;double min_ax=

min(a[0]

,a[2])

;double min_ay=

min(a[1]

,a[3])

;double min_bx=

min(b[0]

,b[2])

;double min_by=

min(b[1]

,b[3])

;//當乙個矩形橫(縱)座標的最大值小於另一矩形橫(縱)座標的最小值時,不相交。

if(max_ax<=min_bx||max_ay<=min_by||max_bx<=min_ax||max_by<=min_ay)

cout<<

0.00

return0;

}

基礎訓練 矩形面積交

平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10 7的實數表示。請在這裡描述輸出格式。例如 對每一組輸入,在一行中輸出a b的值。輸出...

藍橋杯 基礎訓練 矩陣面積交

基礎練習 矩形面積交 時間限制 1.0s 記憶體限制 512.0mb 問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入格式 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點的座標...

基礎練習 矩形面積交

問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入格式 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10 7的實數表示。輸出格式 輸出僅...