1083 - 矩形问题

现给你若干矩形,矩形的边都平行于x轴和y轴,请你编程计算被其他矩形包含在内部的矩形的个数(如果内部的矩形的边与外部的矩形的边重合,也算作正确的结果)。

题目输入

输入包含多组测试数据。每组输入第一行是一个整数n(n<=100),表示矩形个数。
接下来n行,每行输入四个实数,分别表示矩形的最小x坐标、最大x坐标、最小y坐标、最大y坐标。

题目输出

对于每组输入,输出被其他矩形包含在内部的矩形的个数。

输入/输出样例

题目输入

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

C语言解答

#include<stdio.h>

struct R
{
	double xmin,xmax,ymin,ymax;
}r[10000];

int main()
{
	int n,i,j,c;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
			scanf("%lf%lf%lf%lf",&r[i].xmin,&r[i].xmax,&r[i].ymin,&r[i].ymax);
		for(c=i=0;i<n;i++)
			for(j=0;j<n;j++)
				if(i!=j&&r[i].xmin>=r[j].xmin&&r[i].xmax<=r[j].xmax&&r[i].ymin>=r[j].ymin&&r[i].ymax<=r[j].ymax)
				{
					c++;
					break;
				}
		printf("%d\n",c);
	}
	return 0;
}

C++解答

#include<stdio.h>

struct R
{
	double xmin,xmax,ymin,ymax;
}r[10000];

int main()
{
	int n,i,j,c;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
			scanf("%lf%lf%lf%lf",&r[i].xmin,&r[i].xmax,&r[i].ymin,&r[i].ymax);
		for(c=i=0;i<n;i++)
			for(j=0;j<n;j++)
				if(i!=j&&r[i].xmin>=r[j].xmin&&r[i].xmax<=r[j].xmax&&r[i].ymin>=r[j].ymin&&r[i].ymax<=r[j].ymax)
				{
					c++;
					break;
				}
		printf("%d\n",c);
	}
	return 0;
}
时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题