题解:P11543 [Code+#5] 我有矩阵,你有吗?
代码解释
题目传送门
首先读取矩阵的行数 n 和列数 m,然后分别读取矩阵 A 和 B。 first_row_flipped 表示第一行是否翻转。 复制矩阵 A 到 current_A,根据 first_row_flipped 决定是否翻转第一行。 通过比较第一行元素,确定每列是否需要翻转,存储在 col_flip 中。 对需要翻转的列进行翻转操作。 检查剩余行,若需要则进行行翻转,若翻转后仍与目标矩阵不同,则返回 False。 主程序:分别尝试第一行不翻转和翻转两种情况,若有一种情况能使矩阵 A 变为矩阵 B,则输出 Koyi,否则输出 Budexing。
代码:
n,m=map(int,input().split())
A=[list(map(int,input().split())) for _ in range(n)]
B=[list(map(int,input().split())) for _ in range(n)]
def ctf(frf):
cA=[row[:] for row in A]
if frf:
cA[0]=[1-x for x in cA[0]]
cf=[cA[0][j]!=B[0][j] for j in range(m)]
for j in range(m):
if cf[j]:
for i in range(n):
cA[i][j]=1-cA[i][j]
for i in range(1,n):
rnf=any(cA[i][j]!=B[i][j] for j in range(m))
if rnf:
cA[i]=[1-x for x in cA[i]]
if any(cA[i][j]!=B[i][j] for j in range(m)):
return False
return True
if ctf(False) or ctf(True):
print('Koyi')
else:
print('Budexing')
制作不易,点个赞在走吧(声明:非AI)