C++实现0-1背包问题(含源码)
当我们需要在有限的容量内选取物品来达到最大效益的时候,就可以用到0-1背包问题。以下是C++实现这个问题的代码及相应的描述。
#include <iostream>
using namespace std;
int main()
{
int n, m; //n表示物品数量,m表示背包容量
cin >> n >> m;
int w[n + 1], v[n + 1]; //w表示物品重量,v表示价值
for (int i = 1; i <= n; i++)
cin >> w[i] >> v[i];
int dp[n + 1][m + 1]; //dp数组表示容量为j的背包在前i个物品中所能达到的最大价值
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= m; j++)
{
if (i == 0 || j == 0)
dp[i][j] = 0;
else if (j >= w[i])
dp[i][j] = max