问题描述
已知 3 个矩形的大小依次是 a1×b1,a2×b2 和 a3×b3 。用这 3 个矩形能拼 出的所有多边形中, 边数最少可以是多少?
例如用 3×2 的矩形(用 A 表示)、 4×1 的矩形 (用 B 表示) 和 2×4 的矩 形(用 C 表示)可以拼出如下 4 边形。
例如用 3×2 的矩形 (用 A 表示)、 3×1 的矩形(用 B 表示) 和 1×1 的矩 形(用 C 表示)可以拼出如下 6 边形。
输入格式
输入包含多组数据。
第一行包含一个整数 T, 代表数据组数。
以下 T 行, 每行包含 6 个整数 a1,b1,a2,b2,a3,b3, 其中 a1,b1 是第一个矩 形的边长, a2,b2 是第二个矩形的边长, a3,b3 是第三个矩形的边长。
输出格式
对于每组数据, 输出一个整数代表答案。文章来源:https://www.toymoban.com/news/detail-677165.html
样例输入
2
2 3 4 1 2 4
1 2 3 4 5 6
样例输出
4
6
思考:
文章来源地址https://www.toymoban.com/news/detail-677165.html
参考代码:
import os
import sys
def check1(x1,x2,x3): #能完全匹配,四边形
if x1>=x2 and x1>=x3:
if x1==x2+x3 and a[2]+a[3]-x2==a[4]+a[5]-x3:
return True
if x2>=x1 and x2>=x3:
if x2==x1+x3 and a[0]+a[1]-x1==a[4]+a[5]-x3:
return True
if x3>=x1 and x3>=x2:
if x3==x1+x2 and a[0]+a[1]-x1==a[2]+a[3]-x2:
return True
return False
def chachk2(x1,x2,x3): #能部分匹配,六边形
if x1>=x2 and x1>=x3:
if x1==x2+x3 :
return True
if x2>=x1 and x2>=x3:
if x2==x1+x3 :
return True
if x3>=x1 and x3>=x2:
if x3==x1+x2 :
return True
return False
T=int(input())
for t in range(T):
a=list(map(int,input().split()))
ans=8 #除能完全匹配和部分匹配外的为八变形
for i in range(0,2): # 第1个矩形横竖两种摆法
for j in range(2,4): # 第2个矩形横竖两种摆法
for k in range(4,6): # 第3个矩形横竖两种摆法
x1,x2,x3=a[i],a[j],a[k]
if x1==x2 and x2==x3: #三边相等一定能拼成四边形
ans=min(ans,4)
if check1(x1,x2,x3):
ans=min(ans,4)
if x1==x2 or x2==x3 or x3==x1:
ans=min(ans,6)
if chachk2(x1,x2,x3):
ans=min(ans,6)
print(ans)
到了这里,关于Python:每日一题之矩阵拼接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!