判斷兩個區間是否重疊
假設區間表示為[start,end],先存在兩個區間a,b.
兩個區間的關係有兩種:重疊與不重疊
重疊的情況有4種,兩種相交,兩種包含(很容易想到,此處不示意)
不重疊有兩種情況:a在b前面,a在b後面
因此很容易得到判斷區間重疊的方法:
1、正向判斷,列出四種重疊的情況,滿足其一,則重疊;
2、逆向判斷,列出兩種不重疊的情況,如果滿足其一,則重疊;
顯然第二種方法更簡單。
優化正向判斷:
考慮一下正向判斷的四種情況,其實只要滿足max(a.start,b.start)<=min(a.end,b,end),即可判斷a,b重疊。(由於畫圖比較麻煩,這裡就不示意,可以在紙上試試)
#include using namespace std;
typedef structinterval;
bool isoverlap_1(interval interval1,interval interval2)
bool isoverlap_2(interval interval1,interval interval2)
int main()
}return 0;
}
判斷兩個矩形是否重疊
兩個矩形的邊均與x軸或y軸平行,即軸對齊的矩形 將第乙個矩形記做a,第二個矩形記做b 判斷矩陣a與矩陣b是否重疊 邊沿重疊也認為是重疊 第一種方案,正向思維 按照一般的思路,先列舉出所有的矩形重疊的情況,然後,判斷是否是其中一種,如圖所示,共有四種重疊情況,我們使用紫色代表矩形a,紅色代表矩形b,並...
判斷兩個矩陣是否重疊
題目描述 給定兩個矩陣 前提 兩個矩陣的邊均與x軸和y軸平行,即軸對齊的矩形 將第乙個矩形記作a,第二個矩形記作b,判斷矩形a與矩形b是否重疊 邊沿重疊也認為是重疊 如果重疊則返回重疊面積。演算法分析 反向思考,我們不妨先解決出 不重疊 的情況,即b矩陣,可能在a的左側 右側 上側 下側。提交 in...
C 判斷兩個矩形是否重疊
矩形以列表 x1,y1,x2,y2 的形式表示,其中 x1,y1 為左下角的座標,x2,y2 是右上角的座標。如果相交的面積為正,則稱兩矩形重疊。需要明確的是,只在角或邊接觸的兩個矩形不構成重疊。給出兩個矩形,判斷它們是否重疊並返回結果。示例 1 輸入 rec1 0,0,2,2 rec2 1,1,3...