您的位置:首页 > 其它

算法训练 装箱问题

2018-02-10 21:15 197 查看
算法训练 装箱问题  时间限制:1.0s   内存限制:256.0MB      问题描述
  有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。
  要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式  第一行为一个整数,表示箱子容量;
  第二行为一个整数,表示有n个物品;
  接下来n行,每行一个整数表示这n个物品的各自体积。输出格式  一个整数,表示箱子剩余空间。
  样例输入
  24
  6
  8
  3
  12
  7
  9
  7样例输出0/*
最基础的DP
*/
#include<bits/stdc++.h>
using namespace std;
int dp[20005] = {0},a[35]={0};
int main(){
//freopen("input.txt","r",stdin);
int v,n,num;
scanf("%d%d",&v,&n);
for(int i = 0;i < n;i++){
scanf(
4000
"%d",&a[i]);
}
for(int i = 0;i < n;i++){
int last = v;
while(last >= a[i]){
dp[last] = max(dp[last],dp[last-a[i]]+a[i]);
last--;
}
}
cout<<v-dp[v]<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: