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; }