题目:
蒜头君去超市购物,他有一只容量为 VVV 的购物袋,同时他买了 nnn 件物品,已知每件物品的体积 viv_ivi。蒜头君想知道,挑选哪些物品放入购物袋中,可以使袋子剩余的空间最小。
思路:以重量作为状态变量,记录每阶段装了多大v。
AC代码:
#include<iostream>
using namespace std;
int dp[20005]={0};
int main(){
int V,n,w,j;
cin>>V>>n;
for(int i=1;i<=n;i++){
for(cin>>w,j=V;j>=w;j--){
if(dp[j]<dp[j-w]+w)
dp[j] = dp[j-w]+w;
}
}
cout<<V-dp[V];
return 0;
}