箱子問題 超級詳細解析

2021-10-19 17:38:10 字數 2270 閱讀 7329

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 1

sample output:

思路:

首先有個箱子裝載圖如下:

000

0000

0000

0000

0000

0000

0000

0000

0000

0

從大到小裝入產品,尺寸4~6的各佔乙個箱子。

尺寸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。每乙個箱子的外型尺寸都是一樣的,現在...