题目连接:http://www.noobdream.com/DreamJudge/Issue/page/1211/#
本人想法:题目给定矩形任意对角线的两个点(并没有仔细规定是正对角线还是反对角线的两个端点)。
不管给定的是哪两个点,都能得出正对角线的左下角和右上角的坐标(当然选择这个只是作为一个参考,可以选择其他),
然后就可以根据坐标来判断两个矩形是相交、相离、还是包含(这是包含这点把我搞的好辛苦)。
#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; }
欢迎评论。