# 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
面试题:最多的地方有多少矩形相互重叠python 实现
猜你喜欢
转载自blog.csdn.net/qq_23534759/article/details/79971534
今日推荐
周排行