算法训练 装箱问题
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;
}
有一个箱子容量为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;
}
相关文章推荐
- 算法训练 装箱问题
- 算法训练 装箱问题
- 算法训练 装箱问题 递归动态规划
- 算法训练 装箱问题
- 算法训练 装箱问题(01背包)
- 算法训练 装箱问题
- 蓝桥网 算法训练 装箱问题
- 蓝桥杯 算法训练 装箱问题 (DP)
- 算法训练 装箱问题(0-1背包)
- 蓝桥杯 ALGO-21算法训练 装箱问题 java版
- 算法训练 装箱问题
- ALGO-21 算法训练 装箱问题
- 算法训练 装箱问题
- 算法训练 装箱问题 蓝桥杯
- 蓝桥杯 ALGO-21算法训练 装箱问题(动态规划,01背包)
- 算法训练 装箱问题
- 算法训练 装箱问题
- 蓝桥杯-算法训练-Anagrams问题
- 蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数
- 蓝桥杯 ALGO-45算法训练 调和数列问题