package com.interview.recursion;
/**
* Date 02/25/2016
* @author Tushar Roy
*
* Print all subsequence of a given array.
*
* Time complexity is exponential
* Space complexity is O(n)
*/
public class PrintAllSubsequence {
public void print(int[] input) {
int[] output = new int[input.length];
for (int i = 0; i < input.length; i++) {
output[0] = input[i];
print(input, output, 1, i + 1, true);
}
}
private void print(int[] input, int[] output, int len, int current, boolean print) {
if (print) {
for (int i = 0; i < len; i++) {
System.out.print(output[i] + " ");
}
System.out.println();
}
if (current == input.length) {
return;
}
output[len] = input[current];
print(input, output, len + 1, current + 1, true);
print(input, output, len, current + 1, false);
}
public static void main(String args[]) {
PrintAllSubsequence ps = new PrintAllSubsequence();
int[] input = {1, 2, 3, 4};
ps.print(input);
}
}