演算法問題 : 如果把積木分配在箱子內

請先看這裡 : 下面是我要做的程式的其中一小部分, 其實還有更多要求 其中重點是如何在下面兩大問題取得平衡點(即同時符合兩者的基本要求) 我的程式是用C寫, 但我也懂部分的C++語言, 所以可用上C/C++解說 當然問題是演算法, 文字解釋也沒有問題的, 最後先謝謝各位的幫助 這個問題我會給20點分數的! 希望得到大家的努力來解答我的問題吧 -  -  -  -  -  -  -  -  -  -  -  - 如果可以寫一個程式出來, 自動把一埋積木分配入箱子內 積木及箱子都是正方體, 積木以1x1x1cm立方為1單位 箱子以3x3x3cm立方為1單位 用戶會輸入積木每件的體積(n單位,... show more 請先看這裡 :
下面是我要做的程式的其中一小部分, 其實還有更多要求
其中重點是如何在下面兩大問題取得平衡點(即同時符合兩者的基本要求)
我的程式是用C寫, 但我也懂部分的C++語言, 所以可用上C/C++解說
當然問題是演算法, 文字解釋也沒有問題的, 最後先謝謝各位的幫助
這個問題我會給20點分數的! 希望得到大家的努力來解答我的問題吧
-  -  -  -  -  -  -  -  -  -  -  -

如果可以寫一個程式出來, 自動把一埋積木分配入箱子內
積木及箱子都是正方體, 積木以1x1x1cm立方為1單位
箱子以3x3x3cm立方為1單位
用戶會輸入積木每件的體積(n單位, 其中n是正整數)
箱子數目是無限的, 但程式要求以最小的箱子放好各件積木
別想到數學中的三維立體空間問題! 題目還未完的
假設有一件體積是3單位的積木, 程式可以把這件積木斬開成3件1單位來分配
但這3件積木必須分配在同一個箱子內
箱子數目必須是最小的, 而且要把27個單位的空間用盡

例外情況: 當一件積木體積大於27時, 可以把它斬開成2件處理
而分開放在2個箱子內, 大於81的斬開成3件...如類推

例外情況2: 箱子內的積木允許有疊高的情況, 即每個箱子可以超出27單位
但須要盡量減少這個情況出現(不可能太多的箱子也超出)
例如分配的結果有2個,
(1) 是由Y個箱子放N件積木, 其中只有2個箱子都超出了1單位
(2) 是由(Y-1)個箱子放N件積木, 其中有7個箱子都超出了1單位
程式須要選出(1)的結果, 至於詳細的選擇條件可以留給大家決定
而超出的限額由用戶決定, 但不能太大(建議限制小於9)

現在所有積木都有顏色(只有黑和白2種)
程式須要計算黑積木告白積木的體積比例
然後根據這個比例分配積木到箱子中
注意每一個箱子中的黑白積木比例要做到接近先前計算出的比例
並且須要同時符合最前面的要求
Update: 如果不太明白我所說的, 可以給我留言問過究竟
e-mail : chicorita_pm@yahoo.com.hk
icq# : 292277186
web page : http://chicorita.24cc.cc
Update 2: 錯誤更正 :
例外情況 - 當一件積木體積大於27時, 可以把它斬開成2件處理
而分開放在2個箱子內, 大於81的斬開成3件...如類推

這裡大於81的斬開成3件應改為4件
8 answers 8