疊放箱子問題 DP

2021-09-02 20:18:45 字數 968 閱讀 5052

題目:

某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下:

1)每個貨櫃上最多只能直接疊放乙個貨櫃。

2)編號較小的貨櫃不能放在編號較大的貨櫃之上。

3)每個貨櫃都給出了自身的重量和可承受的重量,每個貨櫃之上的所有貨櫃重量之和不得超過該貨櫃的可承受的重量。

現在要求你程式設計,從中選出最多個貨櫃,使之在滿足以上條件的情況下疊放起來,即要求疊得盡可能地高。

輸入:第一行是乙個正整數n,表示共有n個貨櫃(1≤ n ≤1000)。

以下共有n行,每行兩個正整數,中間用空格分隔,分別表示每個貨櫃的自身重量和可承受的重量,兩個數均為小於等於3000。

輸出:輸出最多可疊放的貨櫃總數。執行時間不超過去時10秒。

樣例輸入:

5  19 15 

7 13 

5 7 

6 8 

1 2樣例輸出:

4思路:

設f[i,j]

表示第i

個箱子到第

n個箱子中總重量為

j的最大箱

子數。

考慮第i

個箱子放與不放的情況。

注意:能選的條件是j>=a[i])&&(b[i]>=j-a[i]。

**:#include

#include

#define rr register

using namespace std;

int n,a[1002],b[1002],f[1002][6001],ans;//a自身重量。//b承受重量。 

int main()

for (rr int i=0;i<=6000;++i)

ans=max(ans,f[1][i]);

printf("%d",ans);//輸出。 

return 0;//完美的返回。

}

DP 疊放箱子

某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下 1 每個貨櫃上最多只能直接疊放乙個貨櫃。2 編號較小的貨櫃不能放在編號較大的貨櫃之上。3 每個貨櫃都給出了自身的重量和可承受的重量,每個貨櫃之上的所有貨櫃重量之和不得超過該貨櫃...

疊放箱子問題

疊放箱子問題 description 某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在要將其中某些貨櫃疊放起來,貨櫃疊放的規則如下 1 每個貨櫃上最多只能直接疊放乙個貨櫃。2 編號較小的貨櫃不能放在編號較大的貨櫃之上。3 每個貨櫃都給出了自身的重量和可承受的重量,每個貨...

疊放箱子問題

疊放箱子問題 time limit 10000ms memory limit 65536k total submit 309 accepted 115 case time limit 1000ms description 某港口有一批貨櫃,將其編號,分別為1至n。每乙個箱子的外型尺寸都是一樣的,現在...