description:
乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有6個型號,它們的長寬分別為1×1,2×2,3×3,4×4,5×5,6×6。這些產品通常使用乙個6×6×h的長方體包裹包裝,然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法地減少每個訂單運送時的包裹數量。他們很需要有乙個好的程式以解決這個問題從而節省費用。現在這個程式由你來設計。input:
每個訂單資訊用包括6個整數的一行資料表示,中間用空格隔開,分別為1×1至6×6這6種產品的數量。output:
輸出乙個整數代表對應的訂單所需的最小包裹數。sample input:
0 0 4 0 0 1sample output: 思路:
首先有個箱子裝載圖如下:
從大到小裝入產品,尺寸4~6的各佔乙個箱子。000
0000
0000
0000
0000
0000
0000
0000
0000
0
尺寸3要看具體情況,乙個箱子最多4個尺寸3。
若尺寸3個數為n
,則n/4表示被尺寸3完全轉入的箱子,即箱子裡面只有尺寸3。
若n%4>0則說明還有尺寸3剩餘,需要再拿乙個箱子裝;則尺寸3一共需要(n+3)/4
個箱子裝,這個式子表示向上取整。
若n%4=1,則新箱子只有乙個尺寸3,剩餘空間能裝5個尺寸2(見箱子裝載圖);同理n%4=2,剩餘空間能裝2個尺寸2;n%4=3,剩餘空間能裝1個尺寸2。
裝入尺寸3完成後,計算所有箱子裡還能裝入多少尺寸2。
此時開始裝尺寸2,如果尺寸2的數目大於尺寸2的空位,則需要為尺寸2開拓新的箱子。
轉入尺寸2完成後,計算所有箱子裡還能裝入多少尺寸1。
此時開始裝尺寸1,如果尺寸2的數目大於尺寸1的空位,則需要為尺寸1開拓新的箱子。
最終輸出箱子個數。
**:
#include
#include
#include
#include
using
namespace std;
intmain()
,sum=0;
//尺寸1~6分別對應陣列a[1]~a[6]
int two_size[4]
=;//尺寸為3的產品,在不同情況下能裝下的尺寸為2的個數
int two_empty,one_empty;
//尺寸2和尺寸1的空位數目
for(
int i=
1;i<=
6;i++
) cin>>a[i]
; sum=a[6]
+a[5
]+a[4]
+(a[3]
+3)/
4;//從大到小裝,尺寸4~6的各佔乙個箱子,尺寸3要看具體情況
two_empty=a[4]
*5+two_size[a[3]
%4];
//尺寸4箱子剩餘可裝5個尺寸2,尺寸3剩餘空位能裝多少尺寸2要看具體情況
if(a[2]
>two_empty)
//當前尺寸2的產品大於剩餘可裝的空位,要裝入新箱子
sum+
=(a[2]
-two_empty+8)
/9;//乙個新箱子最多裝入9個尺寸2的產品
one_empty=sum*
36-a[6]
*36-a[5]*
25-a[4]
*16-a[3]*
9-a[2]
*2;//當前能裝尺寸1的剩餘空間
if(a[1]
>one_empty)
//對於尺寸1的產品,同理上面的if
sum+
=(a[1]
-one_empty+35)
/36; cout
}
pygame安裝(超級詳細)
那麼就是python公升級後不能使用原來的命令。依次輸入python m ensurepip 和easy install pip 兩種方法都可以安裝。分割線 更新一下。上面是我初次安裝時的方法,隨著python使用的增多,發現直接pip命令就可以之間安裝。首先確保你有pip。pip也可以檢視自己已經...
疊放箱子問題
疊放箱子問題 description 某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下 1 每個貨櫃上最多只能直接疊放乙個貨櫃。2 編號較小的貨櫃不能放在編號較大的貨櫃之上。3 每個貨櫃都給出了自身的重量和可承受的重量,每個貨...
疊放箱子問題
疊放箱子問題 time limit 10000ms memory limit 65536k total submit 309 accepted 115 case time limit 1000ms description 某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在...