CodeVS 1014
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
INPUT:
V N
每个物品的体积
OUTPUT:
箱子剩余空间
*********************************************华丽丽的分割线****************************************************
很经典的01背包问题 使箱子的剩余空间最小即使物品的体积最大...(废话好像有人不知道一样...)
所以就是经典地打出代码~经典地AC~不得不说这题其实挺水的...连每个物品的价值都没有...就算不降维也没问题吧...
不过还是降智...哦不降维打击了:
#include <iostream> #include <algorithm> #include <cstring> using namespace std; int v[31]; long long f[20001]; int main() { int V,n; cin>>V>>n; for(int i=1;i<=n;i++){ cin>>v[i]; } memset(f,0,sizeof(f)); for(int i=1;i<=n;i++){ for(int j=V;j>=v[i];j--){ f[j]=max(f[j],f[j-v[i]]+v[i]); } } cout<<V-f[V]<<endl; return 0; }
继续CodeVS刷题之路~期待做完3页动态规划题的那天~(-_-)~