面试题:最多的地方有多少矩形相互重叠python 实现

# encoding=utf-8
'''
输入描述:
输入包括五行。
第一行包括一个整数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示例1
输入
2
0 90
0 90
100 200
100 200
输出
2
'''

import sys
lines = sys.stdin.readlines()  # 一次读入多行
n = int(lines[0])
x1 = list(map(int, lines[1].split()))  # map批量处理
y1 = list(map(int, lines[2].split()))
x2 = list(map(int, lines[3].split()))
y2 = list(map(int, lines[4].split()))
print(x1 + x2)  # [0, 90, 100, 200]  列表加法
print(y1 + y2)  # [0, 90, 100, 200]
print x1  # [0, 90]
res = 1
for x in x1+x2:  # 判断每个矩形的左下角或者右上角与其他每个矩形的相交最大个数
    for y in y1+y2:
        cnt = 0  # 对于左下角和右上角,独立判断,max取那个值最大的
        for i in range(n):
            if x > x1[i] and y > y1[i] and x <= x2[i] and y <= y2[i]:  # 若存在公共区域,必然是横坐标大于x1,小于等于x2,纵坐标大于y1,小于等于y2
                cnt += 1
        res = max(res, cnt)
print(res)


# ctrl + d  结束输入
# run->stop

猜你喜欢

转载自blog.csdn.net/qq_23534759/article/details/79971534