0 4 #include <iostream>
#include <cstdio>
using namespace std;
const int N =222222;
struct{
int minx,miny;
int maxx,maxy;
}a[N];
int main()
{
int n,sum;
while(scanf("%d\n",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d%d%d%d",&a[i].minx,&a[i].maxx,&a[i].miny,&a[i].maxy);
sum=0;
for(int i=0;i<n;i++)//枚举所有矩形。
for(int j=0;j<n;j++)//再枚举所有可能包裹它的矩形。
{
if(j!=i&&a[i].minx>=a[j].minx&&a[i].maxx<=a[j].maxx&&a[i].miny>=a[j].miny&&a[i].maxy<=a[i].maxy)//a[i]这个矩形被包裹了。
{
sum++;//计数加一。
break;//可以退出了,不然重复计算。
}
}
printf("%d\n",sum);
}
return 0;
}
也可以不用结构体类似于方法二: #include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
int i,n,minx[1005],miny[1005],maxx[1005],maxy[1005];
while(~scanf("%d",&n))
{
int sum=0;
for(i=0;i<n;i++)
scanf("%d%d%d%d",&minx[i],&maxx[i],&miny[i],&maxy[i]);
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
if(j!=i&&minx[j]<=minx[i]&&maxx[j]>=maxx[i]&&miny[j]<=miny[i]&&maxy[j]>=maxy[i])
{
sum++;
break;
}
printf("%d\n",sum);
}
return 0;
}
|