21xrx.com
2024-11-22 06:55:52 Friday
登录
文章检索 我的文章 写文章
背包问题C++代码
2023-07-09 18:15:24 深夜i     --     --
背包问题 C++ 代码

背包问题是计算机科学中一个经典的问题,而C++语言也是在解决此问题方面非常重要的一种工具。在此,我们将分享如何使用C++语言来解决背包问题的代码。

背包问题通常指:给定一组物品,每种物品都有自己的重量和价格,在限制总重量不超过背包承载范围的情况下,如何选择装入背包中的物品,使得背包中装入的物品总价值最大。

为了解决这个问题,我们需要使用动态规划算法。下面是使用C++语言实现背包问题的代码:


#include<bits/stdc++.h>

using namespace std;

int dp[1005];

int v[1005],w[1005];

int main()

{

  int n,m;

  cin>>n>>m;

  for(int i=1;i<=n;i++)

  {

    cin>>w[i]>>v[i];

  }

  for(int i=1;i<=n;i++)

  {

    for(int j=w[i];j<=m;j++)

    {

      dp[j]=max(dp[j],dp[j-w[i]]+v[i]);

    }

  }

  cout<<dp[m]<<endl;

  return 0;

}

首先,我们定义了数组dp、v、w。dp数组存储解决问题所需的动态规划值,其所有元素初始化为0。v和w数组存储每个物品的价值和重量。

接着,我们输入物品数量n和背包承载能力m,并为每个物品输入其重量w和价值v。

然后,我们使用两个for循环来计算dp值。最外层的for循环控制物品,里面的for循环控制背包容量。在每一次循环中,我们使用max函数来选择当前可能的最大值。

最后,输出dp[m],即背包容量为m时的最大价值。

这就是使用C++语言解决背包问题的代码了。通过了解这些代码,您可以使用C++语言来解决类似的问题,并为您的项目提供有力的支持。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复