牛客网编程题 矩形重叠

https://www.nowcoder.com/practice/a22dd98b3d224f2bb89142f8acc2fe57?tpId=98&tqId=32829&tPage=1&rp=1&ru=/ta/2019test&qru=/ta/2019test/question-ranking

题解:

尝试所有可能的顶点,看有多少个矩形包含这个顶点。

代码如下:

#include
#include
#include
using namespace std;

struct point{
    int x,y;
    point(int xx,int yy){
        x=xx;
        y=yy;
    }
};

vector<point> vec;
int n,res=0;
int x1[55],x2[55],y1[55],y2[55];

int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x1[i];
    }
    for(int i=0;i<n;i++){
        cin>>y1[i];
    }
    for(int i=0;i<n;i++){
        cin>>x2[i];
    }
    for(int i=0;i<n;i++){
        cin>>y2[i];
    }

    for(int i=0;i<n;i++){
        int x=x1[i];
        for(int j=0;j<n;j++){
            int y=y1[j];
            vec.push_back(point(x1[i],y1[j]));
        }
    }

    for(int i=0;i<n;i++){
        int x=x2[i];
        for(int j=0;j<n;j++){
            int y=y2[j];
            vec.push_back(point(x2[i],y2[j]));
        }
    }

    for(int i=0;i<vec.size();i++){
        int x=vec[i].x,y=vec[i].y;
        int tmp=0;
        for(int j=0;j<n;j++){
            if(x>x1[j]&&y>y1[j]&&x<=x2[j]&&y<=y2[j]){
                tmp++;
            }
        }
        if(tmp>res){
            res=tmp;
        }
    }
    if(res==0){
        cout<<1;
    }else{
        cout<<res;
    }
    return 0;
}

你可能感兴趣的:(面试题)