Generate all the binary strings of N bits

• Difficulty Level : Easy
• Last Updated : 12 Jul, 2021

Given a positive integer number N. The task is to generate all the binary strings of N bits. These binary strings should be in ascending order.
Examples:

```Input: 2
Output:
0 0
0 1
1 0
1 1

Input: 3
Output:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1```

Approach: The idea is to try every permutation. For every position, there are 2 options, either ‘0’ or ‘1’. Backtracking is used in this approach to try every possibility/permutation.
Below is the implementation of the above approach:

C++

 `// C++ implementation of the above approach:` `#include ``using` `namespace` `std;` `// Function to print the output``void` `printTheArray(``int` `arr[], ``int` `n)``{``    ``for` `(``int` `i = 0; i < n; i++) {``        ``cout << arr[i] << ``" "``;``    ``}``    ``cout << endl;``}` `// Function to generate all binary strings``void` `generateAllBinaryStrings(``int` `n, ``int` `arr[], ``int` `i)``{``    ``if` `(i == n) {``        ``printTheArray(arr, n);``        ``return``;``    ``}` `    ``// First assign "0" at ith position``    ``// and try for all other permutations``    ``// for remaining positions``    ``arr[i] = 0;``    ``generateAllBinaryStrings(n, arr, i + 1);` `    ``// And then assign "1" at ith position``    ``// and try for all other permutations``    ``// for remaining positions``    ``arr[i] = 1;``    ``generateAllBinaryStrings(n, arr, i + 1);``}` `// Driver Code``int` `main()``{``    ``int` `n = 4;` `    ``int` `arr[n];` `    ``// Print all binary strings``    ``generateAllBinaryStrings(n, arr, 0);` `    ``return` `0;``}`

Java

 `// Java implementation of the above approach:``import` `java.util.*;` `class` `GFG``{` `// Function to print the output``static` `void` `printTheArray(``int` `arr[], ``int` `n)``{``    ``for` `(``int` `i = ``0``; i < n; i++)``    ``{``        ``System.out.print(arr[i]+``" "``);``    ``}``    ``System.out.println();``}` `// Function to generate all binary strings``static` `void` `generateAllBinaryStrings(``int` `n,``                            ``int` `arr[], ``int` `i)``{``    ``if` `(i == n)``    ``{``        ``printTheArray(arr, n);``        ``return``;``    ``}` `    ``// First assign "0" at ith position``    ``// and try for all other permutations``    ``// for remaining positions``    ``arr[i] = ``0``;``    ``generateAllBinaryStrings(n, arr, i + ``1``);` `    ``// And then assign "1" at ith position``    ``// and try for all other permutations``    ``// for remaining positions``    ``arr[i] = ``1``;``    ``generateAllBinaryStrings(n, arr, i + ``1``);``}` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``int` `n = ``4``;` `    ``int``[] arr = ``new` `int``[n];` `    ``// Print all binary strings``    ``generateAllBinaryStrings(n, arr, ``0``);``}``}` `// This code is contributed by``// Surendra_Gangwar`

Python3

 `# Python3 implementation of the``# above approach` `# Function to print the output``def` `printTheArray(arr, n):` `    ``for` `i ``in` `range``(``0``, n):``        ``print``(arr[i], end ``=` `" "``)``    ` `    ``print``()` `# Function to generate all binary strings``def` `generateAllBinaryStrings(n, arr, i):` `    ``if` `i ``=``=` `n:``        ``printTheArray(arr, n)``        ``return``    ` `    ``# First assign "0" at ith position``    ``# and try for all other permutations``    ``# for remaining positions``    ``arr[i] ``=` `0``    ``generateAllBinaryStrings(n, arr, i ``+` `1``)` `    ``# And then assign "1" at ith position``    ``# and try for all other permutations``    ``# for remaining positions``    ``arr[i] ``=` `1``    ``generateAllBinaryStrings(n, arr, i ``+` `1``)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``n ``=` `4``    ``arr ``=` `[``None``] ``*` `n` `    ``# Print all binary strings``    ``generateAllBinaryStrings(n, arr, ``0``)` `# This code is contributed``# by Rituraj Jain`

C#

 `// C# implementation of the above approach:``using` `System;` `class` `GFG``{` `// Function to print the output``static` `void` `printTheArray(``int` `[]arr, ``int` `n)``{``    ``for` `(``int` `i = 0; i < n; i++)``    ``{``        ``Console.Write(arr[i]+``" "``);``    ``}``    ``Console.WriteLine();``}` `// Function to generate all binary strings``static` `void` `generateAllBinaryStrings(``int` `n,``                            ``int` `[]arr, ``int` `i)``{``    ``if` `(i == n)``    ``{``        ``printTheArray(arr, n);``        ``return``;``    ``}` `    ``// First assign "0" at ith position``    ``// and try for all other permutations``    ``// for remaining positions``    ``arr[i] = 0;``    ``generateAllBinaryStrings(n, arr, i + 1);` `    ``// And then assign "1" at ith position``    ``// and try for all other permutations``    ``// for remaining positions``    ``arr[i] = 1;``    ``generateAllBinaryStrings(n, arr, i + 1);``}` `// Driver Code``public` `static` `void` `Main(String []args)``{``    ``int` `n = 4;` `    ``int``[] arr = ``new` `int``[n];` `    ``// Print all binary strings``    ``generateAllBinaryStrings(n, arr, 0);``}``}` `// This code has been contributed by 29AjayKumar`

PHP

 ``

Javascript

 ``

Output:

```0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1```

Time complexity – O(2n)

Space complexity – O(n)

Related Article: Generate all the binary number from 0 to n

My Personal Notes arrow_drop_up