Related Articles
Generate all the binary strings of N bits
• Difficulty Level : Medium
• Last Updated : 12 Apr, 2019

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 ``
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
```

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

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up