我的主要思路是找到每个矩形内的单位方格,再使用set集合将所有方格统计,最后在set集合里遍历每一个方格,统计其再矩形里出现的次数,即为面积。再蓝桥刷题系统上只能过30%,有优化方案的欢迎私信讨论。
# 矩形类
class The_it:
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
# 获取矩形内包含的面积为1的方格,用方格坐标表示:如矩形(1 1)(2 2)包含的方格坐标为(2 2)
# 注意区分坐标轴的坐标和方格坐标,定义方格坐标(1 1)为由(0,0)(1,1)的轴坐标构成,也就是第一象限的的一个方格
def get_sq(self):
set_sq = set() # 这里用set和list都一样
for x in range(a+1, c+1):
for y in range(b+1, d+1):
set_sq.add((x, y))
# 返回所有方格坐标
return set_sq
# 初始化将每个矩形包含的方格保存在列表中
n = int(input())
all_big = []
for _ in range(n):
a, b, c, d = map(int, input().split())
once = The_it(a, b, c, d)
all_big.append(once.get_sq())
# 获取所有方格,不重复,用set
all_sq = set()
for it in all_big:
for sq in it:
all_sq.add(sq)
# 奇偶判断,设置初始个数为0
s_j = 0
s_o = 0
# 从集合中获取方格
for sq in all_sq:
cot = 0
# 遍历每个矩形
for it in all_big:
if sq in it:
cot += 1
else:
continue
if cot % 2 == 1:
s_j += 1
else:
s_o += 1
print(s_j)
print(s_o)
有更好的方法或优化方案的一定要来私信我呀