演算法訓練 裝箱問題(0 1揹包)

2021-07-26 20:29:07 字數 712 閱讀 3177

時間限制: 1 sec  記憶體限制: 256 mb

提交: 1  解決: 1 [

提交][

狀態][

討論版]

有乙個箱子容量為v(正整數,0<=v<=20000),同時有n個物品(0<n<=30),每個物品有乙個體積(正整數)。

要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。

第一行為乙個整數,表示箱子容量;

第二行為乙個整數,表示有n個物品;

接下來n行,每行乙個整數表示這n個物品的各自體積。

乙個整數,表示箱子剩餘空間。

24
6
8
3
1

2

7
9
7
#include#include#includeusing namespace std;

#define inf 0x3fffffff

int main()

{ int v,n,i,a[100],dp[20001],j;

cin>>v>>n;

for(i=0;i>a[i];

for(i=0;i<20001;i++)

dp[i]=v;

for(i=0;i=a[i];j--)

dp[j]=min(dp[j],dp[j-a[i]]-a[i]);

cout<

裝箱問題 01揹包

有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入 第一行是乙個整數v,表示箱子容量 第二行是乙個整數n,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積 乙個整數,表示...

裝箱問題(01揹包問題)

有乙個箱子容量為 v,同時有 n 個物品,每個物品有乙個體積 正整數 要求 n 個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 第一行是乙個整數 v,表示箱子容量。第二行是乙個整數 n,表示物品數。接下來 n 行,每行乙個正整數 不超過10000 分別表示這 n 個物品的各自體積。輸...

裝箱問題 簡單01揹包問題)

題目描述 description 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入描述 input description 乙個整數v,表示箱子容量 乙個整數n,表示有n個物品 ...