题目描述
用具有x,y两个整型变量成员的结构类型SPoint来表示坐标点。用SRect结构类型来描述矩形,其中包含p1和p2两个SPoint成员分别表示矩形对角线上的两个点。
编写判断两个矩形是否重叠的函数。
输入
判断次数
矩形1的对角线顶点坐标x1、y1、x2、y2
矩形2的对角线顶点坐标x1、y1、x2、y2
......
输出
是否重叠
样例查看模式
正常显示查看格式
输入样例1 <-复制
输出样例1
提示
两个矩形的边均与x轴或y轴平行,即轴对齐的矩形。
#include <iostream>
using namespace std;
struct SPoint
{
int x, y;
};
struct SRect
{
SPoint p1, p2;
};
bool check(const SRect& a, const SRect& b)
{
if (max(a.p1.x, a.p2.x) < min(b.p1.x, b.p2.x) || max(a.p1.y, a.p2.y) < min(b.p1.y, b.p2.y)
|| min(a.p1.x, a.p2.x) > max(b.p1.x, b.p2.x) || min(a.p1.y, a.p2.y) > max(b.p1.y, b.p2.y))
{
return true;
}
else return false;
}
int main()
{
int t;
cin >> t;
while (t--)
{
SRect r1, r2;
cin >> r1.p1.x >> r1.p1.y >> r1.p2.x >> r1.p2.y;
cin >> r2.p1.x >> r2.p1.y >> r2.p2.x >> r2.p2.y;
if (check(r1, r2)) cout << "not overlapped" << endl;
else cout << "overlapped" << endl;
}
return 0;
}