1. 程式人生 > >果汁攤位數目

果汁攤位數目

幫助 註意 返回 uic 距離 quantity fst class 如果

 1 約翰錯過了他的公交車,他一路從家走到學校。他的學校和家之間的距離是D個單位。
 2 他開始旅程時有K個單位的初始能量。他每走1個單位的距離,能量也減少1個單位。
 3 在他去學校的路上,有N個果汁攤。每個攤位都有特定量的果汁(以升為單位)。
 4 他每消費一升果汁,能量增加1個單位。請註意,為了讓他持續走路,他的能量不應為0
 5 寫一個算法,幫助約翰找出為了成功到達學校他應該停下補充能量所需要的最小果汁攤位的數目。如果
 6 他不能到達學校,輸出將為-1 7 輸入:該函數/方法的輸入包括五個參數-
 8 numOfStalls表示果汁攤位數目的整數N
 9 distOfStalls 表示約翰的家與攤位距離的整數列表;
10 juiceQuantity表示每個果汁攤位可獲得的果汁量的整數列表 11 distance表示約翰的家和學校之間的距離的整數D 12 initialEnergy表示約翰的初始能量的整數K 13 輸出: 14 返回一個整數,表示約翰為了成功到達學校而應該停下的小果汁攤位數目 15 16 int findMinNumberOfJuiceStalls(int numOfStalls, int* distOfStalls, 17 int* juiceQuantity, int distance, 18 int initialEnergy) 19 { 20 priority_queue<int
> heap; 21 int curenergy = initialEnergy; 22 int res = 0; 23 for (int i = 0; i < numOfStalls; i++) 24 { 25 while (curenergy < distOfStalls[i]) 26 { 27 if (heap.empty()) 28 return -1; 29 curenergy += heap.top();
30 res++; 31 heap.pop(); 32 } 33 heap.push(juiceQuantity[i]); 34 } 35 while (curenergy < distance) 36 { 37 if (heap.empty()) 38 return -1; 39 curenergy += heap.top(); 40 res++; 41 heap.pop(); 42 } 43 return res; 44 }

果汁攤位數目