基础的 0-1背包问题,将背包的重量作为背包的价值,套用模板即可。
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 10005;
int dp[MAXN]; //背包的价值,dp[i]表示背包容量为i时,背包的最大价值
int main()
{
int value[3] = { 150,200,350 }; //三种货物的价值
int T;
int N;
cin >> T;
while (T--)
{
cin >> N;
memset(dp, 0, sizeof(dp));
for (int i = 0; i < 3; i++) //0-1背包模板
{
for (int j = value[i]; j <= N; j++)
dp[j] = max(dp[j], dp[j - value[i]] + value[i]);
}
cout << N - dp[N] << endl;
}
return 0;
}
继续加油。
来源:CSDN
作者:Intelligence1028
链接:https://blog.csdn.net/Intelligence1028/article/details/104746614