求Python的各位帮忙看看,用python语言实现“最小代价生成树”问题的分支限界算法
def mctFromLeafValues( arr):
res = 0
while len(arr) > 1:
min_val = min(arr)
idx = arr.index(min_val)
if idx > 0 and idx < len(arr) - 1: #有左有右
left_val, right_val = arr[idx - 1], arr[idx + 1]
elif idx == len(arr) - 1: #有左没右
left_val, right_val = arr[idx - 1], 16 #为什么是16?因为最大只有15
elif idx == 0: #有右没左
left_val, right_val = 16, arr[idx + 1]
res += min(min_val * left_val, min_val * right_val)
arr.remove(min_val) #把当前最小值删掉,已经用完了
return res
arr = [5,1,4]
print(mctFromLeafValues(arr))
参考
https://blog.csdn.net/qq_47150350/article/details/121024975
mark