背包问题是一类组合优化的问题。在其最简单的形式中,问题模型是这样的:假设你有一个能承受最大重量为W的背包和一系列物品,每个物品都有其自身的重量和价值,目标是确定哪些物品应该被选中放入背包,使得背包内物品的总价值最大,同时不超过背包的最大承重。
下面是使用C++实现的背包问题的动态规划求解算法(0-1背包问题):
#include <iostream>
#include <vector>
using namespace std;
// 动态规划求解0-1背包问题
int knapsack(int W, const vector<int>& wt, const vector<int>& val, int n) {
// dp[i][w] 表示前i个物品在限重为w的条件下可以达到的最大价值
vector<vector<int>>