題目描述
有一個箱子容量為V(正整數,0<=V<=20000),同時有n個物品(0<n<=30),每個物品有一個體積(正整數)。
要求n個物品中,任取若幹個裝入箱内,使箱子的剩餘空間為最小。
輸入
第一行為一個整數,表示箱子容量;
第二行為一個整數,表示有n個物品;
接下來n行,每行一個整數表示這n個物品的各自體積。
輸出
一個整數,表示箱子剩餘空間。
樣例輸入
24
6
8
3
12
7
9
7
樣例輸出
0
動态規劃入門題。
代碼:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int V, n, num;
int a[20005] = {0};
cin >> V >> n ;
while(n--)
{
cin >> num ;
for(int i=V; i>=num; i--)
if( a[i-num] + num > a[i] )
a[i] = a[i-num] + num ;
}
cout << V-a[V] << endl ;
return 0;
}