01背包问题动态规划代码实现
时间: 2023-11-15 22:03:18 浏览: 63
01背包源代码动态规划法
4星 · 用户满意度95%
C++实现01背包问题的动态规划代码如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, W;
cin >> n >> W;
int w[n+1], v[n+1];
for(int i=1; i<=n; i++)
cin >> w[i] >> v[i];
int dp[n+1][W+1];
for(int i=0; i<=n; i++)
for(int j=0; j<=W; j++)
dp[i][j] = 0;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=W; j++)
{
if(j < w[i])
dp[i][j] = dp[i-1][j];
else
dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);
}
}
cout << dp[n][W] << endl;
return 0;
}
```
其中,n表示物品的数量,W表示背包的容量,w[i]表示第i个物品的重量,v[i]表示第i个物品的价值,dp[i][j]表示前i个物品放入容量为j的背包中所能获得的最大价值。
阅读全文