您的位置:首页 > 编程语言 > C语言/C++

DP_01背包_装箱问题

2014-10-17 00:00 155 查看
论述

有一个箱子容量为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c dp 算法 编程