第九章 動態規劃-1295:裝箱問題

1295:裝箱問題

時間限制: 1000 ms 內存限制: 65536 KB
提交數: 4957 通過數: 2670
【題目描述】
有一個箱子容量爲V(正整數,0≤v≤20000),同時有n個物品(0< n ≤30),每個物品有一個體積(正整數)。

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

【輸入】
第一行是一個整數V,表示箱子容量。

第二行是一個整數n,表示物品數。

接下來n行,每行一個正整數(不超過10000),分別表示這n個物品的各自體積。

【輸出】
一個整數,表示箱子剩餘空間。

【輸入樣例】
24
6
8
3
12
7
9
7
【輸出樣例】
0


思路:01揹包的變式,費用等於價值!

#include<cstdio>
#include<iostream>
#define N 100000
using namespace std;
int f[N],c[N];
int v,m;
int main(){
	cin >> v >> m;
	for(int i = 1; i <= m; i++)
	cin >>c[i];
	for(int i = 1; i <= m; i++)
	  for(int j = v; j >= c[i];j--)
	  f[j] = max(f[j], f[j-c[i]] + c[i]);
	  printf("%d\n",v - f[v]);
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章