Is there any O(n^2) algorithm to generate all sub-sequences of an array? Is there any O(n^2) algorithm to generate all sub-sequences of an array? arrays arrays

Is there any O(n^2) algorithm to generate all sub-sequences of an array?


No

There cannot be any algorithm of less than O(2^n) complexity simply because there are O(2^n) sub-sequences. You need to print each of them hence the time complexity has to be greater than or equal to O(2^n).


You can't improve algorithm complexity, but you can improve how stream is used.As other answer points out o(n * 2^n) is best you can have.

When you use std::endl you are flushing buffers of streams. To achieve best performance buffers should flush them selves when they are full.Since each subsequence have to be quite short (at maximum 64 elements), it means that you are flushing stream quite often and have serious performance hit.So replacing std::endl with '\n' will provide significant performance improvement.

Other tricks which can help improve stream performance:

int main() {    std::ios::sync_with_stdio(false);    std::cin.tie(nullptr);    int n;     cin >> n;