c++ - 找出总和在 a 到 b 之间的所有子序列
问题描述
我如何有效地找到总和介于 a 到 b 之间的所有子序列?我尝试了首先创建子序列然后检查条件是否存在于 a 和 b 之间的一般方法。这是我的尝试。
我也可以优化它吗?如果我不想打印它们。(如果打印它只会给出 O(n^3) 的复杂性
void printSubinrng(vector < int > arr, int n, int a, int b) {
int sum = 0;
for (int i = 0; i < n; i++)
{
sum = sum + arr[i];
}
for (int i = 0; i < n; i++) {
if (sum <= a && sum >= b)
{
cout << arr[i] << " ";
}
}
}
void printSubsequences(vector < int > arr, int index, int a, int b, vector < int > subarr) {
if (index == arr.size()) {
int l = subarr.size();
if (l != 0)
printSubinrng(subarr, l, a, b);
} else {
printSubsequences(arr, index + 1, a, b, subarr);
subarr.push_back(arr[index]);
printSubsequences(arr, index + 1, a, b, subarr);
}
return;
}
解决方案
推荐阅读
- python - 非凸 MINLP 的神秘
- tensorflow - 将自定义 AutoML tflite 模型与 Flutter 应用程序集成
- javascript - 有一个按钮叫做“下一步”按钮。当我按下键盘上的右箭头时,我没有工作。我尝试了以下代码
- python - PHP feof 的 Python 替代方案
- mysql - 发出异步等待数据库调用的请求未返回正确结果。节点.js
- javascript - 使用 Quill 时更改工具栏按钮的颜色?
- c# - 如何在没有缩进的情况下将代码复制并粘贴到 Visual Studio 监视窗口中?
- xcode - 如何在不选择文本的情况下在 Xcode 中剪切一行?
- python - 在 Python 中,如何使用 ctypes 将回调数组作为参数传递给 C 函数?
- android - 从 Fragments 访问 MainActivity / ContainerActivity 中的项目