21xrx.com
2025-04-12 00:05:11 Saturday
文章检索 我的文章 写文章
动态规划算法C++代码
2023-06-25 06:19:17 深夜i     11     0
动态规划 算法 C++ 代码 算法实现

动态规划算法是一种常用的优化算法,它通过将问题分解成子问题来解决复杂的问题。它的基本思想是在求解每个子问题时,将已经得到的信息进行存储,以便下一次求解子问题时可以直接利用已有信息来降低计算量。

以下是使用C++实现动态规划算法的代码示例。该示例使用背包问题来演示:

#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 10003;
const int MAXM = 1000003;
int n, m;
int w[MAXN], v[MAXN];
int dp[MAXM];
int main()
{
  cin >> m >> n;
  for (int i = 1; i <= n; i++)
  {
    cin >> w[i] >> v[i];
  }
  for (int i = 1; i <= n; i++)
  {
    for (int j = m; j >= w[i]; j--)
    {
      dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
    }
  }
  cout << dp[m] << endl;
  return 0;
}

在以上代码中,我们定义了一个大小为MAXN和MAXM的数组来存储背包信息和结果。变量m表示背包容量,n表示物品数量。在输入时,我们依次读取每个物品的重量w和价值v。

紧接着,我们使用两层循环来在每个子问题中解决顶部物品能否放入背包的问题并更新解决方案。在每个dp[j]中,存储了容量为j时的最大价值。

最后,我们输出容量为m时的最优价值。

动态规划算法是一种在计算机科学中的基本优化算法,其思想可以有效解决复杂的问题。通过以上代码示例,我们可以了解到如何在C++中实现动态规划算法。

  
  

评论区

请求出错了