2018华为笔试题
题1
题目描述
在无限通信接收,接受到的信号一般会有RAKE多径。
现给出RAKE接收机21径能量;多径索引为0~20;
用一个4径的接受窗在21径上进行滑动,滑动窗判断什么位置接收最大能量。接收窗索引以窗内第一径为准。
比如窗最大能量框住径为0,1,2,3;则窗索引为0;
如果两个窗的能量一样,则以索引最小为输出。
要求输出:最大接收能量窗的索引输入描述
21径能量,每一径能量范围为[0,65536]
- 输出描述
虽大接收能量窗的索引
- 示例
输入
0
1
2
3
'''
18
19
20
输出
17
- 我的解题
if __name__ == '__main__':
try:
data = []
for i in range(21):
list_new = int(raw_input())
data.append(list_new)
l = len(data)-3
num_list = [0 for i in range(0,l)]
for i in range(0,l):
num_list[i] = data[i] + data[i+1] + data[i+2] + data[i+3]
index = num_list.index(max(num_list))
print index
except:
pass
题2
- 题目描述
自然键盘的按键顺序是字母顺序;我吗通常使用的是标准键盘,字母排布顺序是打乱的。
即标准键盘的“QWERTYUIOPASDFGHJKLZXCVBNM”键分别对
应自然键盘的“ABCDEFGHIJKLMNOPQRSTUVWXYZ”键。
一个可以在标准键盘上盲打的小学生,并没有注意到自己使用的是自然键盘,他在自然键盘上按照标准键盘的经验,盲打了”I am a boy”,实际打出了”H kz k xif”。
题目要求编程实现,把自然键盘上产生的类似”H kz k xif”这样的字符串,转换为在标准键盘的”I am a boy”。
本题中,输入字符串长度小于1000字节,且不包含汉子等多字节字符。
- 输入描述
一个字符串,表示按照标准键盘输入动作,在自然键盘上打字产生的字符串
- 输出描述
打字的人在标准键盘上要打印的实际内容
- 示例
输入
H kz k xif.
输出
I am a boy.
- 我的解题
if __name__ == '__main__':
try:
data = raw_input()
str1 = list('QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm')
str2 = list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
res_list = []
for s1 in data:
if s1 in str2:
i = str2.index(s1)
res_list.append(str1[i])
else:
res_list.append(s1)
res = "".join(res_list)
print res
except:
pass
题3
- 题目描述
输入时一个整型数组,数组里的整型数可以是证书,也可以是负数。子数组指的是数组中连续的一个或多个元素的集合,求这些子数组中,求和后最大值是多少。
- 输入描述
一个整型数组
- 输出描述
最大连续字数组的和
- 示例
输入
2,-3,4,11,-5,8,3,-6
输出
21
- 我的解题
if __name__ == '__main__':
try:
data_input = raw_input().split(',')
str_data = list(data_input)
data = []
for i in str_data:
data_a = int(i)
data.append(data_a)
data.reverse()
num_list = data
data_len = len(data)
for i in range(1,data_len):
if data[i] < data[i]+ num_list[i-1]:
num_list[i] = num_list[i-1] + data[i]
num = max(num_list)
print num
except:
pass
题目来源于华为2018笔试题,侵删
以上为本人解法,欢迎大佬指点><