Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

APCS 程式設計實作題 物品堆疊

14,702 views

Published on

APCS (Advanced Placement Computer Science)是大學程式設計先修檢測。申請大學電資等理工科系,可以把它列為「個人申請」的項目。 艾鍗APCS本訓練營隊,可以讓你快速了解APCS大學程式設計先修檢測的觀念題與實作題。

我有興趣: 由觀念到應用,完全程式實戰
http://bit.ly/2J581Dh

Published in: Education
  • Be the first to comment

  • Be the first to like this

APCS 程式設計實作題 物品堆疊

  1. 1. 物品堆疊 106 年 10 月 28 日 APCS 程式設計實作題
  2. 2. Example: 總能量消耗的算法 No. W f 1 3 1 2 4 2 3 5 3 3 2 1 能量消耗 0 f(2)*3=2*3=6 f(3)*(3+4)=3*7=21 如果是這種擺放方式總能量消耗為 27
  3. 3. …..那有沒有一種擺法,是可以獲得最低的總能量消耗?
  4. 4. 窮舉法: 把所有可能的排列方式,分別計算其總消耗能量,最 低的就是最好的擺法! 但N=3, 共有N!=3!=6種排列方式 所以計算時間的複雜度會是 N! + N2
  5. 5. 有沒有更快的方式?
  6. 6. 例如,可以不用先不用知道順序, 這樣就不用花N!時間了
  7. 7. 真的要思考的是: 如何快速決定物品的順序? 想法: 為了要拿到自己所要消耗的能量是所 有人當中最低的,那麼他就應該要放在最下 面 拿到自己所要消耗的能量? Cost=(全部重量-自己重量)x自己的使用次數 計算每一個物品Cost, 並且物品依Cost排序, 值愈小的物品放在最下面,值愈大的物品放 愈上面。
  8. 8. Example2: No. W f cost 1 20 1 10 2 10 1 20 2 1 能量消耗 0 10 如果是這種擺放方式,可獲得總能量消耗最低 10 依Cost結果 排序
  9. 9. Example1: No. W f cost 1 3 1 9 2 4 2 16 3 5 3 21 3 2 1 能量消耗 0 f(2)*5=2*5=10 f(1)*(4+5)=1*9=9 如果是這種擺放方式,可獲得總能量消耗最低 19 依Cost結果 排序
  10. 10. 程式解說 (詳見範例 APCS_10610p4.c) https://goo.gl/6MdGuZ
  11. 11. https://goo.gl/6MdGuZ
  12. 12. http://www.ittraining.com.tw/ittraining/it-elearning/datastructures

×