兩個矩形不相交

 

題目鏈接:http://www.noobdream.com/DreamJudge/Issue/page/1211/#ios

 

本人想法:題目給定矩形任意對角線的兩個點(並無仔細規定是正對角線仍是反對角線的兩個端點)。spa

無論給定的是哪兩個點,都能得出正對角線的左下角和右上角的座標(固然選擇這個只是做爲一個參考,能夠選擇其餘),code

而後就能夠根據座標來判斷兩個矩形是相交、相離、仍是包含(這是包含這點把我搞的好辛苦)。blog

 

 

 

 

 

#include <iostream>
using namespace std;

int x1,y1,x2,y2,x3,y3,x4,y4;

int main() {
    
    while(~scanf("%d%d%d%d%d%d%d%d", &x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)) {
        // 輸入任意對角線座標後, 即可以拿到咱們想要的數據(就是正對角線的左下角和右上角的座標) 
        if (x1 > x2) swap(x1, x2);
        if (y1 > y2) swap(y1, y2);
        if (x3 > x4) swap(x3, x4);
        if (y3 > y4) swap(y3, y4);
        // 排除矩形相離和包含 
        if (y2 < y3 || x2 < x3 || y1 > y4 || x1 > x4 || (x1 < x3 && y1 < y3 && x2 > x4 && y2 > y4))
            cout << "NO" << endl;
        else {
            cout << "YES" << endl;
        }
         
    }
    
    return 0;
}

 

 

歡迎評論。io

相關文章
相關標籤/搜索