我想知道是否有一种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;
}
}
endl
替换为'\n'
。 - Marek R