Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
114725 | 蒋沛霖 | 完全背包问题 | C++ | 通过 | 100 | 0 MS | 260 KB | 633 | 2023-12-09 08:44:15 |
#include <iostream> #include<cstdio> #include<algorithm> using namespace std; int w[31], c[31]; int dp[31][201]; int main() { int m, n; cin >> m >> n; //背包容量m和物品数量n for (int i = 1; i <= n; i++) cin >> w[i] >> c[i]; //每个物品的重量和价值 for (int i = 1; i <= n; i++) { //dp[i][j]表示前i件物品,总重量不超过j的最优价值 for (int j = 1; j <= m; j++) { if (j >= w[i]) dp[i][j] = max(dp[i - 1][j], dp[i][j - w[i]] + c[i]); else dp[i][j] = dp[i - 1][j]; } } cout << "max=" << dp[n][m]; // dp[n][m]为最优解 return 0; }