8 条题解
-
1
时间空间复杂度最小一维数组加注释谁要
#include <iostream> #include <algorithm> using namespace std; int main() { int m, n; // 背包容量和物品数量 cin >> m >> n; int W[n]; // 物品重量 int C[n]; // 物品价值 // 输入物品的重量和价值 for (int i = 0; i < n; i++) { cin >> W[i] >> C[i]; } // dp[j] 表示背包容量为 j 时的最大价值 int dp[m + 1] = {0}; // 初始化为0,表示容量为0时价值为0 // 动态规划填表 for (int i = 0; i < n; i++) { // 遍历每个物品 for (int j = m; j >= W[i]; j--) { // 倒序遍历背包容量 dp[j] = max(dp[j], dp[j - W[i]] + C[i]); // 状态转移方程 } } // 输出最大价值 cout << dp[m] << endl; return 0; }
信息
- ID
- 1725
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 267
- 已通过
- 99
- 上传者