迅雷 AI人工智能试题二
求数组中不相邻元素的最大和。
大概意思是:首先输入一个数组,从左往右开始,取出不相邻的数字,使得最后求得的和最大。
这是一个动态规划的问题。
解题思路:
遍历array 中的所有元素,设置两个变量:
aa: 不包含前一个元素的最大和
bb: 包含前一个元素的最大和
更新当前元素的 aa 和 bb:
不包含当前元素的最大和 aa = max(bb’, aa’)
包含当前元素的最大和 bb = aa’+current (元素不能相邻)
如输入为1,2,3,1。
输出为4。
def getMax(a,b): if(a>=b): return a else: return b def getMaxsum(arr,num): if(num<=0): return 0 elif(num==1): return arr[0] aa = 0 bb = arr[0] for i in range(1,num): temp = getMax(aa,bb) bb = aa + arr[i] aa = temp return getMax(bb,aa) while True: try: arr = map(int,raw_input().split(',')) # print(arr) result = getMaxsum(arr,len(arr)) print(result) except: break
浙公网安备 33010602011771号