6月份的时候,华为搞了个“菁英荟”,就赶紧屁颠屁颠的报了个名,结果挺幸运,被选中了,免简历筛选,优招邀请,虽然也没多大用,但是,这就够了,起码向前走了一小丢丢。作为一个机械狗,我是励志要去华为做算法。


华为的笔试题还算是很人性化,一共分为初级,中级,高级三道。因为华为在我的心目中还是很重要的,所以拿到题后,看了一下,比较简单,就有点小高兴,结果,总分600分,只得了66.7分,唉!都是泪,太激动了,结果第一道题就只有66.7%的通过率,一直找不到原因,结果就钻牛角尖了,没心思做其他题,一直在这道题上磨叽,最后时间用完了,到现在还没收到优招面试的通知,太伤心了,不,不是伤心,是心痛,华为对我来说,简直就像那种非他不“娶”的身份!在此,告诫各位同仁,千万别钻牛角尖,题不难,平常心就好。接下来分享一下经验吧!


第一道题:给出一个字符串,然后计算字符串中数字的和,如果数字前有‘-’号,如果是奇数个,按减算,如果是偶数数个,按‘+’算。因为我是一个机械狗,对高大上的c++,java不是很熟,就选用了Python。


拿到题后,没多想就啪啪啪的啪出一段代码,然后提交,发现只有66.7%的通过率,哇!我彻底惊了!这什么鬼,到底发生了什么?我就在这儿反复的看,反复检查,结果一个小时过去了,我还是没发现原因,因为这道题是最基础的,所以真的很慌,慌的一批,后面的两道题真实一点心思都没有,看了第二道题后,感觉还行,有思路,结果又啪啪了一段,交上去,通过率为0,这时候就不是慌了,这时候,要哭了。唉!心痛的一批。

具体代码如下:
while True: try: s = input() L = len(s) i = 0 flag = 0 res = 0 while i <L: num
= 0 if s[i].isdigit(): pos = i pre = i while i < L-1 and s[i+1].isdigit(): i +=
1 while pre >= 1 and s[pre-1] =='-': num += 1 pre -= 1 if num % 2 == 0: res +=
int(s[pos:i+1]) else: res -= int(s[pos:i+1]) i+=1 print(res) except: break
另外一种比较简单的解法如下:
while True: try: s = input() ss = '' L = len(s) for i in range(L): if
s[i].isdigit(): ss += s[i] if i < L-1 and not s[i+1].isdigit(): ss += '+' if
s[i] == '-': ss += s[i] print(eval(ss)) except: break

直到刚才,我才发现,我哪儿错了,原来字符串中连着的数是要当做一个整数的。妈呀!天哪!不说了,头有点痛,先去包扎一下。......................................

接着说:


第二道题:两个最高项为4次的多项式,每项前面的系数为一个复数,即a+bi的形式,现在输入两个4次多项式的系数,最高项在前,实系数在前,形式如:a4,ai4,a3,ai3......b4,bi4.....。输出相乘后的多项式的系数,最高项在前,实系数在前。
while True: try: numbers = [] res = [] for i in range(20):
numbers.append(int(input())) AR = ([0,0,0,0] + numbers[0:10:2])[::-1] AI =
([0,0,0,0] +numbers[1:10:2])[::-1] BR = ([0,0,0,0] +numbers[10:20:2])[::-1] BI
= ([0,0,0,0] +numbers[11:20:2])[::-1] for i in range(8,-1,-1): tempR = 0 tempI
= 0 for j in range(i): ar = AR[j] ai = AI[j] br = BR[i-j] bi = BI[i-j] tempR +=
ar*br-ai*bi tempI += ar*bi + br*ai res.append(tempR) res.append(tempR) for num
in res: print(num) except: break
第三道题:有一对奶牛,从出生后的第四年开始生小牛,每次生一对小牛,问现在有m对小牛,在第n年后有多少奶牛?

此题和其他的生兔子什么的都一样,只不过其开始的第一年是第一对奶牛开始生奶牛的那一年,因此在解此题是,需要在以往的递归中加上三年。
while True: try: def cal(n): if n == None: return if n <= 3: return 1 return
cal(n-1) + cal(n-3)#上一年的牛 + 今年出生的牛 m = int(input()) n = int(input()) num = m *
cal(n+3) print(num) except: break
 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信