两个矩形不相交

 

题目链接: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

相关文章
相关标签/搜索