我都已经快不记得是哪一天做的华为的笔试了,只记得是武长地区优招的最后一波,说是想要在九月份第一批offer发放时有机会就得做.由于我之前一直在公司实习压根就没啥准备,实在没办法了,不能一直延后.>>收到短信说泡在池子里了,到现在了也没消息
我学的比较杂,之前在学校用MATLAB,后来实习开始学Scala,现在又用Python,又接触Java,就都学的很浅显,我也很无奈啊.做笔试前一天晚上看了下华为的题目,很多都是数值处理的编程,直觉用Python会相对容易一些,于是就开始临时抱佛脚了(先说,我Python基础很渣…没用多久).
(一)在一个字符串中,找出所有的整数并求和
题目描述
给定一个字符串str,求其中全部整数数字之和
输入描述
1、忽略小数点,例如”A1.2”,认为包含整数1和2;
2、如果整数的左侧出现字符 “-“,则奇数个认为是负整数,偶数个认为是正整数。
例如”AB-1CD- -2EF- - -3” ,认为包含整数-1、2和-3。
(注意:这里的”-“与”-“间是连续的,没有空格隔开)
输出描述
输出即为字符串中所有整数数字之后。
解答
没什么好说的,直接放Python代码吧,综合了网上的一个进行了修改的:
import sys
a = sys.stdin.readline()
sum,num,pos=0,0,1
if a=='':
print 0
for i in xrange(0,len(a)):
if 48<= ord(a[i])<57:
num=num*10+int(a[i])*pos
else:
sum+=num
num=0
if a[i]=='-':
if i-1>-1 and a[i-1]=='-':
pos=-pos
else :
pos =-1
else:
pos=1
sum+=num
print sum
(三)斐波那契数列递归
题目描述
一个农夫饲养了一批怪物牛,他发现这批牛的繁殖能力惊人,一对牛每月繁殖一对小牛。每一对小牛在出生后,需要花三个月时间来生长,第四个月开始繁殖。
输入描述
第一行输入N,表示N组数据
第二行开始,输入N组数据,每组数据两行:分别为M(1 ≤M ≤100)对牛,第N(1≤N≤50)个月
输出描述
输出N组数据的结果,每组结果占一行
假设怪物牛不存在死亡的情况,计算开始初始数量为M(1 ≤M ≤100)对牛的情况下,第N(1 ≤N≤50)个月牛的总数(对)
解答
#coding=utf-8
import sys
if __name__ == "__main__":
# 读取第一行的n
n = int(sys.stdin.readline().strip())
for j in range(n):
# 读取每一行
line1 = int(sys.stdin.readline().strip()) #line1对牛
line2 = int(sys.stdin.readline().strip()) #line2个月
ans = []
for i in range(line2):
if i ==0 or i==1 or i==2 or i==3:
ans.append(i+2)
else:
ans.append(ans[i-1]+ans[i-4])
print (ans[line2-1])*line1
(二)多项式
题目描述
多项式 的系数[b(2) b(1) b(0)]=[1 2 5]
二者相乘所得的多项式 的系数[c(3) c(2) c(1) c(0)]=[1 3 7 5]
利用上面的计算方法,我们很容易得到:
c(0)=a(0)b(0)
c(1)=a(0)b(1)+a(1)b(0)
c(2)=a(0)b(2)+a(1)b(1)+a(2)b(0)
c(3)=a(0)b(3)+a(1)b(2)+a(2)b(1)+a(3)b(0)
其中:a(3)=a(2)=b(3)=0
在上面的基础上推广一下:
假定两个多项式的系数分别为a(n),n=0~n1和b(n),n=0~n2,这两个多项式相乘所得的多项式系数为c(n),则:
c(0)=a(0)b(0)
c(1)=a(0)b(1)+a(1)b(0)
c(2)=a(0)b(2)+a(1)b(1)+a(2)b(0)
c(3)=a(0)b(3)+a(1)b(2)+a(2)b(1)+a(3)b(0)
c(4)=a(0)b(4)+a(1)b(3)+a(2)b(2)+a(3)b(1)+a(4)b(0)
以此类推可以得到卷积算法:
上面这个式子就是a(n)和b(n)的卷积表达式。
通常我们把a(n)和b(n)的卷积记为:a(n)b(n),其中的表示卷积运算符
输入描述
两个最高阶数为4的复数多项式系数序列。高阶系数先输入;每个系数为复数,复数先输入实数部分,再输入虚数部分; 实部或者虚部为0,则输入为0;
每个实部和虚部的系数最大值不超过1000
输出描述
求卷积多项式系数输出;先输出高阶系数,多项式算法.
解答
……
抱歉,这一题当时一看题目觉得太长就没深入理解了,后面也一直搁着没写.后面有空的时候再来补充吧,没找到Python或C++写的,网上看到厉害的大神有用Java写的:https://www.nowcoder.com/discuss/100519,前面写的两道题感觉都还比较简单.