关注
第二题考完之后想到一个思路。本来的想着用异或来找操作的列(比特位),后来想到的方法似乎能通过,大家看看帮忙分析分析。
对于初始矩阵,对每列求和,统计1的个数,然后跟目标矩阵每列求和的结果对比(因为列的不会调换的,所以可以直接比较),如果相等,可以该列不用操作;否则,再判断两者相加是否等于N(N为行数,代表拨动该列的开关后,1的数量就相同)。
上面的条件并不完整,但是能排除错误的用例。在上面条件通过的基础上,再对两个矩阵每行进行求和,即求1的个数,然后排序(这一步可以抵消随意换行的操作)。排序后的序列相同,则两者可以相互转化;否则,输出 Impossible。
因为这里有很多列求和,行求和,所以用 Python 表示会更直白。这里写个伪码:
给定: mat1, mat2, N, L
过程:
colSum1 = sum(mat1, axis=0)
colSum2 = sum(mat2, axis=0)
rowSum1 = sum(mat1, axis=1)
rowSum2 = sum(mat2, axis=1)
cnt = 0
for i in range(L):
if colSum1[i] == comSum2[i]:
continue
else if colSum1[i] + comSum2[i] == N:
cnt += 1
else:
print("Impossible")
return
if sort(rowSum1) == sort(rowSum2):
print(cnt)
else:
print("Impossible")
欢迎大家提出意见~~~
查看原帖
点赞 2
相关推荐
牛客热帖
更多
正在热议
更多
# 你小心翼翼的闯过多大的祸? #
3002次浏览 63人参与
# 找不到实习会影响秋招吗 #
1399390次浏览 13633人参与
# 实习没事做是福还是祸? #
3250次浏览 55人参与
# 重来一次,你会对开始求职的自己说 #
805次浏览 19人参与
# 2025年终总结 #
132271次浏览 2259人参与
# 考研人,我有话说 #
156490次浏览 1211人参与
# 哪些公司笔/面试难度大? #
7032次浏览 32人参与
# 实习简历求拷打 #
22983次浏览 245人参与
# 携程工作体验 #
18892次浏览 66人参与
# 大厂VS公务员你怎么选 #
69070次浏览 638人参与
# 扒一扒那些奇葩实习经历 #
140066次浏览 1149人参与
# 找不到好工作选择GAP真的丢人吗 #
93631次浏览 1007人参与
# 那些我实习了才知道的事 #
252947次浏览 1784人参与
# 你觉得现在还能进互联网吗? #
29893次浏览 200人参与
# 非技术投递记录 #
672789次浏览 6820人参与
# 机械求职避坑tips #
81016次浏览 531人参与
# 第一份工作能做外包吗? #
93974次浏览 599人参与
# 投格力的你,拿到offer了吗? #
154674次浏览 829人参与
# 作业帮求职进展汇总 #
85232次浏览 559人参与
# 秋招遇到的奇葩面试题 #
101217次浏览 416人参与
