gpt4 book ai didi

c++ - 是否有任何 O(n^2) 算法来生成数组的所有子序列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:37 24 4
gpt4 key购买 nike

我想知道是否有任何复杂度为 O(n^2) 的算法来生成数组的所有子序列。我知道一种算法,但它需要 O((2^n)*n) 时间。

int main() {
int n;
cin >> n;
vector<int> a(n);
for(int i = 0; i < n; ++i)
cin >> a[i];
int64_t opsize = pow(2,n);
for (int counter = 1; counter < opsize; counter++) {
for (int j = 0; j < n; j++) {
if (counter & (1 << j))
cout << a[j] << " ";
}
cout << endl;
}
}

最佳答案

不可能有任何算法的复杂度低于O(2^n) 仅仅是因为有O(2^n) 子序列。您需要打印它们中的每一个,因此时间复杂度必须大于或等于 O(2^n)

关于c++ - 是否有任何 O(n^2) 算法来生成数组的所有子序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51213210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com