记录菜鸡的笔试历程,缅怀那些难以弥补的
望共勉!
百度: 一个mxn的矩阵,矩阵中每个元素为i*j mod 10。然后用axb的卷积核去池化,求池化后的元素之和
A = list(map(int,input().split()))
n = A[0]
m = A[1]
a = A[2]
b = A[3]
res = [[0 for _ in range(m)] for _ in range(n)]
for i in range(1,n+1):
for j in range(1,m+1):
res[i-1][j-1] = (i*j) % 10
result = []
import numpy
res1 = numpy.array(res)
i,j = 0,0
while a+i<=n and b+j<=m:
#循环每b列,并且移动每次移动一个单位,如果到头,则换下一行重复进行。
while b+j<=m:
gg = res1[i:a + i, j:b + j].tolist()
result.append(max(max(row) for row in gg))
j += 1
i += 1
j = 0
print(sum(result))
华为: 选出被投票最多的人,注意条件,首字母大写,其余字母小写,然后还需要注意就是如果票数相同的话,按字母排序。如果字母相等的话,按长度排序。
'''
测试用例
Tom,Lily,Tom,Lucy,Lucy,Jack
'''
A= list(map(str,input().split(',')))
def isright(A):
for word in A:
if not word[0].istitle()or not word[1:].islower():
return False
return True
if isright(A):
B = {}
for i in A:
if i not in B:
B[i] = 1
else:
B[i] += 1
c = ([k for k,v in B.items() if v == max(B.values())]) #import
if len(c)==1:
print(c[0])
else:
c.sort()
print(c[0])
else:
print("error.0001")
题目二:关于正则表达式的一个题目
s = input().split()
A = s[0]
B =s[1]
print("len(B):",len(B))
C = B.split(',')
b= []
i =0
while i < len(C):
b.append((C[i],C[i+1],C[i+2]))
i += 3
C =[]
for word in b:
C.append(''.join(word))
count = 0
for h in C:
if str(h[:h.index('[')]) == A:
print((h[h.index('addr=')+5:h.index('mask=')])+' '+(h[h.index('mask=')+5:h.index('val=')])+' '+(h[h.index('val')+4:h.index(']')]))
else:
count += 1
if count == len(C):
print("FAIL")
网易: 一个人站在二维矩阵中某一个位置,拿着一把长度为L的刀,然后砍向矩阵中的物品栏,如果能够够到,则刀的长度会增加物品栏相应的数字,直到够不着任何物品,返回此时刀的长度。
T = int(input())
s =[]
pk = []
for i in range(T):
a = list(map(int,input().split()))
M = a[0]
L = a[1]
p =[]
for i in range(M):
p.append(list(map(int,input().split()))) #补给分布
pk.append(p)
b = list(map(int,input().split()))
X = b[0]
Y = b[1]
#print(M,L,X,Y)
s.append((M,L,X,Y))
for i in range(T):
M = s[i][0]
L = s[i][1]
P = pk[i][:]
X = s[i][2]
Y = s[i][3]
nums = []
for i in range(M):
for j in range(M):
if P[i][j] != 0:
nums.append((i,j,P[i][j]))
distance = []
import math
for k in range(len(nums)):
x0 = nums[k][0]
y0 = nums[k][1]
result = math.sqrt((x0-X)*(x0-X)+(y0-Y)*(y0-Y))
distance.append((result,nums[k][2]))
distance = sorted(distance)
#print(distance)
for m in range(len(distance)):
if L >= distance[m][0]:
L += distance[m][1]
else:
break
print(L)
题目是关于错位排列的,具体忘记了。
T = int(input())
N = []
Ai = []
Vi = []
for i in range(T):
N.append(int(input()))
Ai.append(list(map(int,input().split())))
Vi.append(list(map(int,input().split())))
import itertools
for i in range(T):
#每次的值
n = N[i]
A = Ai[i]
V = Vi[i]
B = list(itertools.permutations(A)) #全排列
c =[]
# 排除掉不符合要求的
for each in B:
a = []
for j in range(n):
a.append((abs(each[j]-A[j]))) # 记录差值
c.append(a)
#print("c:",c)
d = []
for i in c:
if 0 in i:
continue
else:
a = 0
for k in range(n):
a += (V[k]*i[k])
d.append(a) #记录权重和错排列的乘积
#print("d:",d)
print(min(d)) #输出最小的