蓝桥杯 矩形拼接 10分题
题目
链接
分析
真是疯了
一个10分的题我毫无头绪
原来用的是暴力手段+找规律
这题矩阵总共只有3个,而且每个矩阵只有长和宽两个数据,外加这题的时间限制为1s,种种迹象表明这题是可以直接暴力的
三个矩阵总共只可能摆出3种不同的结果,4,6和8
4比较好说,两种情况(见代码)
如果不是4,那就看是不是6,也有两种情况(见代码)
最后就全是8
这题的关键写点在于这种计算剩余矩形两边和的办法非常地巧妙
以及三个for循环表示了所有比较的可能,这个逻辑要理清
但是为什么轮训检测超时啊我说/o(╥﹏╥)o
代码
def cnt4():
for i in [a, b]:
for j in [c, d]:
for k in [e, f]:
# 三个矩形有一条边是一样长的
if i == j == k:
return 1
# 两个矩形有一条是一样长的,且这两个矩形的另外一条边的和等于第三矩形中的一条边
if i == j and a + b - i + c + d - j == k:
return 1
if i == k and a + b - i + e + f - k == j:
return 1
if j == k and c + d - j + e + f - k == i:
return 1
return 0
def cnt6():
for i in [a, b]:
for j in [c, d]:
for k in [e, f]:
# 两个矩形一条边相等(此时已经排除了4的情况)
if i == j or i == k or j == k:
return 1
# 两个矩形的两条边和正好等于第三条边
if i + j == k or i + k == j or j + k == i:
return 1
return 0
T = int(input())
for t in range(T):
a, b, c, d, e, f = map(int, input().split())
if cnt4():
print(4)
elif cnt6():
print(6)
else:
print(8)