c++如何从 vector 中找到总和为给定数字的元素的最小数量

标签 c++ arrays algorithm

我想从数组中找到元素的总和等于给定数的最少元素数。

最佳答案

看起来像是一个简单的动态规划任务。

假设数组A中有N个元素,你想求出元素个数最少且总和为S。然后我们可以很容易地解决这个问题,时间复杂度为 O(N x S)

考虑 dp[i][j] - 前 i 个元素中总和为 j 的最小元素数, 1 <= i <= N0 <= j <= S。然后对于 A[i] <= j <= S:

dp[i][j] = min(无穷大, dp[i - 1, j], 1 + dp[i - 1][j - A[i]])

我们可以假设 dp[0][0] = 0dp[0][j] = 无穷大 0 < j <= S .

关于c++如何从 vector 中找到总和为给定数字的元素的最小数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41201825/

相关文章:

ruby - 使用 Ruby 进行数组包含检查

javascript - 二叉搜索树 'remove'函数的优化

c++ - 如何对两个 vector 进行运算并将结果保存到另一个 vector

c++ - 在 Macbook pro 的 OSX 上编程 C++

java - 我正在编写一个程序来比较两个数组,但我无法让它将数组与空元素进行比较

algorithm - 检查数字 N 是否是 3 和 5 的倍数之和,因为 N 可能大到 100,000

python - 需要帮助优化此代码以获得更快的结果

C++ 嵌套 for 循环不正确的输出

c++ - 在 C++ 中对结构体数组进行排序

c - 在 C 中返回 int 数组