9.8 小米算法笔试,2道来搞笑的编程题
第一题 矩阵相乘
python暴力只过38%,然后用numpy过了,狗头保命。
import numpy as np
def main():
m, k, n = [int(_) for _ in input().split()]
A, B = [], []
for i in range(m):
A.append([int(_) for _ in input().split()])
for i in range(k):
B.append([int(_) for _ in input().split()])
A = np.asarray(A)
B = np.asarray(B)
# for i in range(m):
# for j in range(n):
# temp = sum([A[i][t] * B[t][j] for t in range(k)])
# print(temp, end=' ')
# print()
C = np.dot(A, B)
for i in range(m):
for j in range(n):
print(C[i][j], end=' ')
print()
if __name__ == '__main__':
main() 第二题 盒子打包
找最最多相同大小盒子的数量即可
思路,为什么是求众数呢,设众数为x,那么小于x的盒子必然可以被放在某一个大小为x的盒子内(可以间接嵌套),大于x的盒子必然可以包含某一个大小为x的盒子(同样可以间接嵌套),而当大小相同时必然处于不同的打包中。
from collections import Counter
def main():
n = int(input())
nums = [int(_) for _ in input().split()]
counter = Counter(nums)
ans = 0
for x, p in counter.items():
ans = max(ans, p)
return ans
if __name__ == '__main__':
print(main()) #小米#