破案了,楼下老哥举出了反例,的确是代码有问题,不能解决诸如3 2 1 4这类输入。
# -*- coding=utf-8 -*-
class Solution():
"""魔法杖最高能量
"""
def maxMagicStickPower(self, n, m, powers):
"""魔法仗能量由最小的能量值的魔法石决定,那么每次找最小和最小邻居中最小融合
Args:
n (int): 魔法石个数
m (int): 可以融合魔法石的次数
powers (list): 魔法石能量数组
"""
if m == 0:
return min(powers)
for i in range(m):
if len(powers) == 1:
return powers[0]
minPowerIndex = powers.index(min(powers))
if minPowerIndex == 0:
powers[minPowerIndex:minPowerIndex+2] = [powers[minPowerIndex]
+ powers[minPowerIndex+1]]
elif minPowerIndex == len(powers)-1:
powers[minPowerIndex-1:minPowerIndex+1] = [powers[minPowerIndex-1]
+ powers[minPowerIndex]]
else:
if powers[minPowerIndex+1] > powers[minPowerIndex-1]:
powers[minPowerIndex-1:minPowerIndex+1] = [powers[minPowerIndex-1]
+ powers[minPowerIndex]]
else:
powers[minPowerIndex:minPowerIndex+2] = [powers[minPowerIndex]
+ powers[minPowerIndex+1]]
return min(powers)
def main():
n, m = map(int, input().split())
powers = list(map(int, input().split()))
ex = Solution()
print(ex.maxMagicStickPower(n, m, powers))
if __name__ == "__main__":
main()
#网易##滴滴#