论述
有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0小于n≤30),每个物品有一个体积(正整数)。要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入v,n,在输入n个物品。
输出箱子的剩余空间为最小。
Input:
24 一个整数,表示箱子容量
6 一个整数,表示有n个物品
8 接下来n行,分别表示这n个物品的各自体积。
3
12
7
9
7
Output:
0 一个整数,表示箱子剩余空间。
//============================================================================
// Name : hdu1864.cpp
// Author : Svitter
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
bool dp[20001];
int t[31];
int main(){
int v, n;
int i, j, m;
while(cin >> v >> n)
{
for(i = 0; i < n; i++)
cin >> t[i];
dp[0] = 1;
for(i = 0; i < n; i++)
for(j = v; j >= t[i]; j--)
if(!t[j] && t[j - t[i]])
t[j] = 1;
m = 0;
for(i = 0; i < v; i++){
if(t[i])
m = i;
}
cout << i << endl;
}
return 0;
}