# Print all possible strings that can be made by placing spaces using Power Set

Given a string you need to print all possible strings that can be made by placing spaces (zero or one) in between them

Examples :

```Input :  str[] = "ABC"
Output : ABC
AB C
A BC
A B C

Input : str[] = "ABCD"
Output : ABCD
A BCD
AB CD
A B CD
ABC D
A BC D
AB C D
A B C D```

If we take a  closer look, we can notice that this problem boils down to Power Set problem. We basically need to generate all subsets where every element is a different space.

Implementation:

## C++

 `// C++ program to print all strings that can be ` `// made by placing spaces ` `#include ` `using` `namespace` `std; ` ` `  `void` `printSubsequences(string str) ` `{ ` `    ``int` `n = str.length(); ` `    ``unsigned ``int` `opsize = ``pow``(2, n - 1); ` ` `  `    ``for` `(``int` `counter = 0; counter < opsize; counter++) { ` `        ``for` `(``int` `j = 0; j < n; j++) { ` ` `  `            ``cout << str[j]; ` `            ``if` `(counter & (1 << j)) ` `                ``cout << ``" "``; ` `        ``} ` `        ``cout << endl; ` `    ``} ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``string str = ``"ABC"``; ` `    ``printSubsequences(str); ` `    ``return` `0; ` `} `

## Java

 `// Java program to print all strings that can be ` `// made by placing spaces ` `import` `java.util.*; ` `class` `GFG ` `{ ` `static` `void` `printSubsequences(String s) ` `{ ` `    ``char``[] str= s.toCharArray(); ` `    ``int` `n = str.length; ` `    ``int` `opsize = (``int``)(Math.pow(``2``, n - ``1``)); ` ` `  `    ``for` `(``int` `counter = ``0``; counter < opsize; counter++) { ` `        ``for` `(``int` `j = ``0``; j < n; j++) { ` ` `  `            ``System.out.print(str[j]); ` `            ``if` `((counter & (``1` `<< j)) > ``0``) ` `                ``System.out.print(``" "``); ` `        ``} ` `        ``System.out.println(); ` `    ``} ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``String str = ``"AB"``; ` `    ``printSubsequences(str); ` `} ` `} ` ` `  `/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python 3 program to print all strings  ` `# that can be made by placing spaces ` `from` `math ``import` `pow` ` `  `def` `printSubsequences(``str``): ` `    ``n ``=` `len``(``str``) ` `    ``opsize ``=` `int``(``pow``(``2``, n ``-` `1``)) ` ` `  `    ``for` `counter ``in` `range``(opsize): ` `        ``for` `j ``in` `range``(n): ` `            ``print``(``str``[j], end ``=` `"") ` `            ``if` `(counter & (``1` `<< j)): ` `                ``print``(``" "``, end ``=` `"") ` ` `  `        ``print``(``"\n"``, end ``=` `"") ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``str` `=` `"ABC"` `    ``printSubsequences(``str``) ` ` `  `# This code is contributed by ` `# Sanjit_Prasad `

## C#

 `// C# program to print all strings ` `// that can be made by placing spaces ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Function to print all subsequences ` `    ``static` `void` `printSubsequences(String s) ` `    ``{ ` `        ``char``[] str= s.ToCharArray(); ` `        ``int` `n = str.Length; ` `        ``int` `opsize = (``int``)(Math.Pow(2, n - 1)); ` `     `  `        ``for` `(``int` `counter = 0; counter < opsize; ` `                                     ``counter++)  ` `        ``{ ` `            ``for` `(``int` `j = 0; j < n; j++)  ` `            ``{ ` `                ``Console.Write(str[j]); ` `                 `  `                ``if` `((counter & (1 << j)) > 0) ` `                    ``Console.Write(``" "``); ` `            ``} ` `            ``Console.WriteLine(); ` `        ``} ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``String str = ``"ABC"``; ` `        ``printSubsequences(str); ` `    ``} ` `} ` ` `  `// This code is contributed by shiv_bhakt. `

## PHP

 ` `

## Javascript

 ``

Output

```ABC
A BC
AB C
A B C```

Time complexity : O(n*2n-1
Auxiliary Space : O(1)