POJ 1468 Rectangles【矩形】

                                     POJ 1468 Rectangles

                                                        http://poj.org/problem?id=1468

 

题意

 给你n个边平行于坐标轴的矩形,问你有多少个矩形被其他矩形包含?(两个矩形重叠的话也算相互包含)

输入

多组输入,输入至文件结束。每组输入整数t( t<=5000)。表示这组有t个矩形,接下来有t行数据,每行4个整数,分别表示这个矩形四个顶点中的最小x坐标,最大x坐标,最小y坐标,最大y坐标,即xmin,xmax,ymin,ymax。

输出

每组测试对应一个整数,表示有多少个矩形被其他矩形包含。

样例输入

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

样例输出

0
4

分析

只要判断一个矩形的4个点是否都在另一个矩形内就行:只要该点的x和y坐标在这个矩形的[XMIN,XMAX]和[YMIN,YMAX]区间即可,具体看程序。

C++程序

#include<iostream>

using namespace std;

const int N=5005;

struct Rec{
	int xmin,ymin,xmax,ymax;
	Rec(){}
}r[N];

//查看第i个矩形是否在第j个矩形中 
bool check(int i,int j)
{
	bool flag=r[j].xmin<=r[i].xmin&&r[i].xmax<=r[j].xmax&&r[j].ymin<=r[i].ymin&&r[i].ymax<=r[j].ymax;
	return flag;
}

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		for(int i=0;i<n;i++)
		  scanf("%d%d%d%d",&r[i].xmin,&r[i].xmax,&r[i].ymin,&r[i].ymax);
		int ans=0;
		for(int i=0;i<n;i++)
		  for(int j=0;j<n;j++)
		  {
		  	if(i==j) continue;
		  	if(check(i,j))
		  	{
		  		ans++;
		  		break;
			}
		  }
		printf("%d\n",ans);
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值