描述
现给你若干矩形,矩形的边都平行于x轴和y轴,请你编程计算被其他矩形包含在内部的矩形的个数(如果内部的矩形的边与外部的矩形的边重合,也算作正确的结果)。
输入
输入包含多组测试数据。每组输入第一行是一个整数n(n<=100),表示矩形个数。
接下来n行,每行输入四个实数,分别表示矩形的最小x坐标、最大x坐标、最小y坐标、最大y坐标。
输出
对于每组输入,输出被其他矩形包含在内部的矩形的个数。
输入样例 1
3
100 101 100 101
0 3 0 101
20 40 10 400
4
10 20 10 20
10 20 10 20
10 20 10 20
10 20 10 20
输出样例 1
0
4
这题本来呢我是用对象数组的,但是不知道为啥一直错,就改用了结构体数组,我们可以先定义一个结构体数组,然后使用循环输入,然后先一级循环取出一个数据,然后二级循环让这个数据和除了他以外的其他数据比对,如果被包含就计数并跳出循环,包含的条件就是x的最小值小于等被测数据的x的最小值,x的最大值大于等被测数据的x的最大值,y轴同理。
#include <iostream>
using namespace std;
struct point
{
double lx,rx;
double ly,ry;
}p[101];
bool check(point a,point b)
{
if(a.lx<=b.lx && a.rx>=b.rx && a.ly<=b.ly && a.ry>=b.ry)
return true;
return false;
}
int main()
{
int n,cont;
int i,j;
while(cin>>n)
{
cont=0;
for(i=0;i<n;i++)
{
cin>>p[i].lx>>p[i].rx>>p[i].ly>>p[i].ry;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j!=i)
{
if(check(p[j],p[i]))
{
cont++;
break;
}
}
}
}
cout<<cont<<endl;
}
return 0;
}