华为4-15实习笔试,三道题分别100+100+70,python实现
华为4-15实习笔试,三道题分别100+100+70,python实现
第一题,就是单纯的统计计数 AC
投票问题计算谁获得的票数最多,平票的时候按名字排序
输入样例就是代码中的第一行
'''
Tom,Lily,Tom,Lucy,Lucy,Jack
'''
# 100%
def test(name):
return name[0].isupper() and name[1:].islower()
def solution(l):
dic = {}
res = None
key = 0
for val in l:
if not test(val):
print("error.0001")
return
if val in dic:
dic[val] += 1
else:
dic[val] = 1
if not res:
res = val
key = dic[val]
else:
if dic[val] > key:
key = dic[val]
res = val
elif dic[val] == key:
if val < res:
key = dic[val]
res = val
print(res)
if __name__ == '__main__':
l = input().split(',')
solution(l)第二题,就是匹配 AC
会正则的应该会特别快,不过我不太记得正则的用法,但是python处理字符串效率还是很高的
主要就是不停的根据几个标志进行切分。
字符串匹配,就是保证'['前的字符要和第一个关键词就是read 是一样的,中间也要保证十六进制,和必须有addr,mask,valzh
'''
read read[addr=0x17,mask=0xff,val=0x7],read_his[addr=0xff,mask=0xff,val=0x1],read[addr=0xf0,mask=0xff,val=0x80]
'''
def judge(l):
l1 = []
l2 = []
for item in l.split(','):
x, y = item.split('=')
l1.append(x)
try:
eval(y)
l2.append(y)
except:
return False
return l2
if __name__ == '__main__':
keyword, str = input().split(' ')
strList = str.split('],')
strList[-1] = strList[-1].replace(']', '')
flag = False
for i in range(len(strList)):
key, value = strList[i].split('[')
if key == keyword:
tmp = judge(value)
if tmp:
flag = True
print(' '.join(tmp)+'\r\n',end='')
if not flag:
print("FAIL")第三题,DFS或者DP都可以应该 70%
计算函数调用的最带栈开销
一开始显示有越界的问题,后来改到没有越界之类的问题,就单纯应该是部分测试样例的结果不同。
我是用的DP做的
dic{
1:2,3,
2:3,4,5
3:4
}
dp[i]=max([dp[val] for val in dic[i])代码
'''
6 2 3 1 0 0
1 20 2 3
2 30 3 4 5
3 50 4
4 60
5 80
6 90
'''
res = dict()
def helper(idx, map_x, costs,pre,val):
if val in pre:
print("R")
exit(0)
else:
pre.add(val)
if idx in res:
return res[idx]
else:
if idx in map_x:
res[idx]=max(
[helper(val, map_x, costs,pre.copy(),val) for val in map_x[idx]]
)
else:
res[idx]=0
if idx >= len(costs):
print('NA')
exit(0)
res[idx]+=costs[idx]
return res[idx]
if __name__ == '__main__':
line0 = input().split(' ')
n = int(line0[0])
costs = [0]
map_x = dict()
for i in range(n):
l = [int(item) for item in input().split(' ')]
costs.append(l[1])
if l[2:]:
map_x[l[0]] = l[2:]
maxres=0
for idx in range(1, n + 1):
if idx not in res and idx in map_x:
res[idx] = max(
[helper(val, map_x, costs,set(),val) for val in map_x[idx]]
) + costs[idx]
elif idx not in map_x:
res[idx]=costs[idx]
maxres=max(maxres,res[idx])
print(maxres)
