题目描述
例如:[2, 1, 3] => 6 + 6 * 3= 24,(1, 2, 6)的最大是6,(2 + 1 + 3)是6
power = max(booting) + sum(processPowers) * processPowers.length
求小于maxPower的最大processPowers的连接个数
def MaxPowerConnectionNumber():
# 电厂
processPowers = [2, 1, 3, 4, 5]
# 每个电厂的启动量
bootingPowers = [1, 2, 6, 3, 4]
maxPower = 25
MaxPower = []
flag = 0
for i in range(len(processPowers)):
saveProcessStr = []
saveBootingStr = []
saveProcessStr.append(processPowers[i])
saveBootingStr.append(bootingPowers[i])
power = max(saveBootingStr) + sum(saveProcessStr) * len(saveProcessStr)
if power < maxPower:
MaxPower.append(power)
for i in range(len(processPowers)):
if i + 1 < len(processPowers):
for j in range(i + 1, len(processPowers)):
saveProcessStr = []
saveBootingStr = []
saveProcessStr.append(processPowers[i])
saveProcessStr.append(processPowers[j])
saveBootingStr.append(bootingPowers[i])
saveBootingStr.append(bootingPowers[j])
power = max(saveBootingStr) + sum(saveProcessStr) * len(saveProcessStr)
if power < maxPower:
MaxPower.append(power)
for i in range(len(processPowers)):
if i + 1 < len(processPowers):
kj = i + 1
saveProcessStr = []
saveBootingStr = []
saveProcessStr.append(processPowers[i])
saveProcessStr.append(processPowers[kj])
saveBootingStr.append(bootingPowers[i])
saveBootingStr.append(bootingPowers[kj])
if int(i - 2) >= 0:
number = []
for ii in range(0, i - 1):
number.append(ii)
print(f'number={number}')
if int(kj + 1) < len(processPowers):
for j in range(kj + 1, len(processPowers)):
if len(saveProcessStr) >= 3:
saveProcessStr.pop()
saveBootingStr.pop()
if int(i - 2) >= 0:
for ki in range(len(number)):
if len(saveProcessStr) >= 3:
saveProcessStr.pop()
saveBootingStr.pop()
saveProcessStr.append(processPowers[number[ki]])
saveBootingStr.append(bootingPowers[number[ki]])
power = max(saveBootingStr) + sum(saveProcessStr) * len(saveProcessStr)
if power < maxPower:
MaxPower.append(power)
else:
saveProcessStr.append(processPowers[j])
saveBootingStr.append(bootingPowers[j])
power = max(saveBootingStr) + sum(saveProcessStr) * len(saveProcessStr)
if power < maxPower:
MaxPower.append(power)
else:
if int(i - 2) >= 0:
for ki in range(len(number)):
if len(saveProcessStr) >= 3:
saveProcessStr.pop()
saveBootingStr.pop()
saveProcessStr.append(processPowers[number[ki]])
saveBootingStr.append(bootingPowers[number[ki]])
power = max(saveBootingStr) + sum(saveProcessStr) * len(saveProcessStr)
if power < maxPower:
MaxPower.append(power)
List_MaxPower = set(MaxPower)
Three_result = max(set(MaxPower))
for item in List_MaxPower:
print(f"the {item} has found {MaxPower.count(item)}")
print(f'second_result={Three_result}, MaxCount={MaxPower.count(Three_result)}')
我自己做的结果,没有经过很深入的思考,我也不知道对不对,本人算法这块较弱,求各位大佬来帮我改正一下吧