P1049 裝箱問題 dp or dfs

2021-08-22 12:01:43 字數 1213 閱讀 4354

有乙個箱子容量為 vv

v (正整數, 0≤v≤200000 \le v \le 200000≤

v≤20

000 ),同時有 nn

n 個物品( 0

030,每個物品有乙個體積(正整數)。

要求 nn

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

輸入格式:111

個整數,表示箱子容量111

個整數,表示有 nn

n 個物品

接下來 nn

n 行,分別表示這 nn

n 個物品的各自體積

輸出格式:111

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

輸入樣例#1:複製

2468

31279

7

輸出樣例#1:複製

0

noip2001普及組 第4題

可以用dfs做,也可以用揹包做 典型的01揹包

dfs:

#include

#include

#include

using

namespace

std;

int a[111];

int t,max1 = 0,v,n;

void dfs(int k)

else

}int main()

dfs(1);

printf("%d\n",v-max1);

return

0;}

揹包

#include

#include

#include

using

namespace

std;

int dp[100005];

int a[100005];

int v,n;

int main()

for(int i = 1; i <= n;i++)

for(int j = v;j >= a[i];j--)

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

printf("%d\n",v-dp[v]);

return

0;}

P1049 裝箱問題

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

P1049 裝箱問題

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

P1049 裝箱問題

有乙個箱子的容量為v,有n個物品,每個物品都有乙個體積,要求在這n個物品中使箱子剩餘的體積最小。2468 31279 70o nm 連續寫了4題關於動態規劃的題目,但毫不例外的都是01揹包,能不能再簡單一點,我也是沒看出有多少改變。跟採藥相比也就少了個每個物品的價值,但物品的體積也可以看作是它的價值...