2019校招真题编程(六)矩形重叠

矩形重叠

    • 题目描述
    • 我的思路
    • 解题思路

题目描述

网易

平面内有n个矩形, 第i个矩形的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。

如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。

请你计算出平面内重叠矩形数量最多的地方,有多少个矩形相互重叠。

输入包括五行。
第一行包括一个整数n(2 <= n <= 50), 表示矩形的个数。
第二行包括n个整数x1[i](-10^9 <= x1[i] <= 10^9),表示左下角的横坐标。
第三行包括n个整数y1[i](-10^9 <= y1[i] <= 10^9),表示左下角的纵坐标。
第四行包括n个整数x2[i](-10^9 <= x2[i] <= 10^9),表示右上角的横坐标。
第五行包括n个整数y2[i](-10^9 <= y2[i] <= 10^9),表示右上角的纵坐标。

输出一个正整数, 表示最多的地方有多少个矩形相互重叠,如果矩形都不互相重叠,输出1。

我的思路

感觉贼笨蛋,将每个矩形所有面积内覆盖,读出矩阵最大数

#include 
#include 
using namespace std;

int main()
{
    int n;
    cout<<"enter n: ";
    cin>>n;
    
    vectorx1(n, 0);
    vectory1(n, 0);
    vectorx2(n, 0);
    vectory2(n, 0);
    
    int maxValue = 0;
    int maxx=0, maxy=0;
    cout<<"enter each index:"<>x1[i];
        maxx = maxx>x1[i]?maxx:x1[i];
    }
    for(int i=0; i>y1[i];
        maxy = maxy>y1[i]?maxy:y1[i];
    }
    for(int i=0; i>x2[i];
        maxx = maxx>x2[i]?maxx:x2[i];
    }
    for(int i=0; i>y2[i];
        maxy = maxy>y2[i]?maxy:y2[i];
    }
    
    vector> record(maxx+1, vector(maxy+1, 0));
    
    for(int i=0; irecord[x][y]?maxValue:record[x][y];
            }
        }
    }
    cout<

咩有通过

答案错误:您提交的程序没有通过所有的测试用例
case通过率为40.00%

解题思路

链接:https://www.nowcoder.com/questionTerminal/a22dd98b3d224f2bb89142f8acc2fe57
来源:牛客网

参考:无论何种情况,重叠区域也是四条边组成。而且是取自与n的矩形中的四条。所以遍历边的交点即可。

想要知道某个重合区域在多少个矩形内,可以转化为计算这个重合区域的左下角在多少个矩形内。外面两层循环遍历了所有重合区域可能的左下角,最里层循环计算这个左下角在多少个矩形内。

核心代码

#include 
#include 
using namespace std;

int main()
{
    int n;
    cin>>n;
    
    vectorx1(n, 0);
    vectory1(n, 0);
    vectorx2(n, 0);
    vectory2(n, 0);
    
    int maxValue = 0, res=0;
    int maxx=0, maxy=0;

    for(int i=0; i>x1[i];
    }
    for(int i=0; i>y1[i];
    }
    for(int i=0; i>x2[i];
    }
    for(int i=0; i>y2[i];
    }
    
    for(int x: x1)
    {
        for(int y: y1)
        {
            for(int i=0; i=x1[i] && x=y1[i] && ymaxValue?res:maxValue;
            maxValue=0;

        }
    }
    cout<

运行时间:5ms

占用内存:408k

你可能感兴趣的:(C++,算法)