分金條的最小花費

2021-09-24 23:29:35 字數 628 閱讀 5462

一塊金條切成兩半,是需要花費和長度數值一樣的銅板的。比如 長度為20的 金條,不管切成長度多大的兩半,都要花費20個銅 板。一群人想整分整塊金 條,怎麼分最省銅板? 例如,給定陣列,代表一共三個人,整塊金條長度為 10+20+30=60. 金條要分成10,20,30三個部分。 如果, 先把長 度60的金條分成10和50,花費60 再把長度50的金條分成20和30, 花費50 一共花費110銅板。

但是如果, 先把長度60的金條分成30和30,花費60 再把長度30 金條分成10和20,花費30 一共花費90銅板。 輸入乙個陣列,返回分割的最小代價。

思路:利用哈夫曼編碼解決

def getminsplitcost(l):

if l == none or len(l) < 2:

return 0

queue =

for i in range(len(l)):

res = 0

while len(queue)!=1:

queue = sorted(queue)[::-1]

a1 = queue.pop()

a2 = queue.pop()

res += a1+a2

return res

資料結構與演算法 分金條的最小花費

題目描述給定乙個正數陣列arr,arr的累加和代表金條的總長度,arr的每個數代表金條要分成的長度。規定長度為k的金條分成兩塊,費用為k個銅板。返回把金條分出arr中的每個數字需要的最小代價。要求 時間複雜度為o n log n o nlogn 空間複雜度為o n o n 思路 直接使用貪心策略,這...

最小花費 Dijkstra

原題鏈結傳送門 d es crip tion description descri ptio n在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。i np ut inp...

砍樹最小花費

題意 有n種樹,每種樹給出高度h,砍掉每顆樹的花費c,每種樹的數量p,現在要砍掉一些樹,使得最高的樹的數量超過所有樹的一半,問最小花費。不同種類的樹高度可能相同 題解 列舉不同的高度,把高於它的樹都砍掉,然後比它矮的樹挑便宜的砍,使得該高度的樹佔所有樹的1 2 1。給樹按高度排序,首先可以用字尾和預...