题目: 一个容量有限的背包,n个物品,每个物品占用一定的容量并且有一定的价值,问背包最多装多少价值
输入
1 一组样例
5 10 5个物品 10的背包容量
1 2 3 4 5 每个物品的价值
5 4 3 2 1 每个物品的重量
这个就是最基本的背包问题
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; const int maxn = 1005; long long value[maxn]; long long vol[maxn]; long long dp[maxn][maxn]; int main() { int T,n,v,i,j; scanf("%d",&T); while(T --) { memset(dp, 0, sizeof(dp)); scanf("%d%d",&n,&v); for(i = 1; i <= n; ++i) scanf("%lld",value+i); for(i = 1; i <= n; ++i) scanf("%lld",vol+i); for(i = 1; i <= n; ++i) { for(j = 0; j <= v; ++j) { dp[i][j] = dp[i-1][j]; if(vol[i] <= j) dp[i][j] = max(dp[i][j],dp[i-1][j-vol[i]] + value[i]); } } printf("%lld\n",dp[n][v]); } }