判断一个矩形是否在另一个矩形里,直接判断四个点是否在矩形里即可。暴力。。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <algorithm> #include <queue> #include <stack> #include <math.h> using namespace std; const int MAX = 5010; const double eps = 1e-6; struct recangle{ double lx,ly,rx,ry;};//左下角,右上角 recangle r[MAX]; bool flag[MAX]; bool dy(double x,double y) { return x > y + eps;} // x > y bool xy(double x,double y) { return x < y - eps;} // x < y bool dyd(double x,double y) { return x > y - eps;} // x >= y bool xyd(double x,double y) { return x < y + eps;} // x <= y bool dd(double x,double y) { return fabs( x - y ) < eps;} // x == y bool r_in_r(recangle a,recangle b) { if( dyd(a.lx,b.lx) && xyd(a.rx,b.rx) && dyd(a.ly,b.ly) && xyd(a.ry,b.ry) ) return true; return false; } int main() { int n; while( ~scanf("%d",&n) ) { memset(flag,false,sizeof(flag)); for(int i=0; i<n; i++) scanf("%lf %lf %lf %lf",&r[i].lx,&r[i].rx,&r[i].ly,&r[i].ry); for(int i=0; i<n; i++) for(int k=0; k<n; k++) if( i != k && r_in_r(r[i],r[k]) ) flag[i] = true; int sum = 0; for(int i=0; i<n; i++) if( flag[i] ) sum++; printf("%d/n",sum); } return 0; }