#include<iostream> using namespace std; const int N = 10010; int n, m; int dp[N][N]; int w[N], v[N]; int main() { 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 = 1; j <= m; j++) { dp[i][j] = dp[i - 1][j]; if (j >= w[i]) dp[i][j] = max(dp[i][j], dp[i - 1][j - w[i]] + v[i]); } } cout << dp[n][m]; }
算法.01背包问题
最新推荐文章于 2024-09-12 19:02:20 发布
本文展示了如何使用C++编程语言实现一个动态规划算法,解决涉及数组的最优化问题,利用贪心策略在给定条件(如w[i])下计算最优路径的值。
摘要由CSDN通过智能技术生成