裝箱問題 STL

2021-08-17 10:46:08 字數 1951 閱讀 9409

7-9 裝箱問題(20 分)

假設有n項物品,大小分別為s​1​​、s​2​​、…、s​i​​、…、s​n​​,其中s​i​​為滿足1≤s​i​​≤100的整數。要把這些物品裝入到容量為100的一批箱子(序號1-n)中。裝箱方法是:對每項物品, 順序掃瞄箱子,把該物品放入足以能夠容下它的第乙個箱子中。請寫乙個程式模擬這種裝箱過程,並輸出每個物品所在的箱子序號,以及放置全部物品所需的箱子數目。

輸入格式:

輸入第一行給出物品個數n(≤1000);第二行給出n個正整數s​i​​(1≤s​i​​≤100,表示第i項物品的大小)。

輸出格式:

按照輸入順序輸出每個物品的大小及其所在的箱子序號,每個物品佔1行,最後一行輸出所需的箱子數目。

輸入樣例:

8 60 70 80 90 30 40 10 20

輸出樣例:

60 1

70 2

80 3

90 4

30 1

40 5

10 1

20 2

5思路

用 vector 來儲存箱子其剩下的容量

然後 第一次 push 乙個 100進去

然後 以後 每一次 都先查詢

有沒有 乙個能存放

如果有 取陣列下標最小的那個

如果沒有 新push 乙個 100 進去

然後 每次要儲存 操作 要把物品 與對應陣列下標對應起來

下標 從1 開始計數

最後再輸出 v.size()

ac**

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a) memset(a, 0, sizeof(a))

using

namespace

std;

typedef

long

long ll;

typedef

long

double ld;

typedef

unsigned

long

long ull;

typedef pair pii;

typedef pair pll;

typedef pair psi;

typedef pair pss;

const

double pi = 3.14159265358979323846264338327;

const

double e = exp(1);

const

double eps = 1e-6;

const

int inf = 0x3f3f3f3f;

const

int maxn = 1e3 + 5;

const

int mod = 1e9 + 7;

struct node

q[maxn];

int main()

}if (flag == -1)

else

}for (int i = 0; i < n; i++)

cout

<< v.size() << endl;

}

裝箱問題 STL

7 9 裝箱問題 20 分 假設有n項物品,大小分別為s 1 s 2 s i s n 其中s i 為滿足1 s i 100的整數。要把這些物品裝入到容量為100的一批箱子 序號1 n 中。裝箱方法是 對每項物品,順序掃瞄箱子,把該物品放入足以能夠容下它的第乙個箱子中。請寫乙個程式模擬這種裝箱過程,並...

問題A 裝箱問題

思路 思路 根據演算法筆記上01揹包問題的一維形式改編,就僅僅是把每件物品的價值改為1,再未做其他修改,後來發現不行 const int maxn 1001 int dp maxn int w maxn int main for int i 0 i參照別人的答案,進行的思考 首先,狀態轉移方程 dp...

初步STL貨櫃List

1.它實質上是乙個雙向鍊錶 2.使用時包括標頭檔案 include 3.不支援隨機訪問迭代器,僅僅能使用雙向迭代器 因此不能使用一些演算法和運算子操作 4.在不論什麼位置的插入 刪除操作都是常數時間 list intlist0 建立空的 intlist list intlist1 3 包括3個元素 ...