Given a positive integer n, print all n-bit binary numbers having more 1’s than 0’s for any prefix of the number.
Input : n = 2 Output : 11 10 Input : n = 4 Output : 1111 1110 1101 1100 1011 1010
A simple but not efficient solution will be to generate all N-bit binary numbers and print those numbers that satisfy the conditions. The time complexity of this solution is exponential.
An efficient solution is to generate only those N-bit numbers that satisfy the given conditions. We use recursion. At each point in the recursion, we append 0 and 1 to the partially formed number and recur with one less digit.
1111 1110 1101 1100 1011 1010
This article is contributed by Pranav. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Print all distinct integers that can be formed by K numbers from a given array of N numbers
- Prefixes with more a than b
- Shift all prefixes by given lengths
- Check whether two strings can be made equal by increasing prefixes
- Python | Count all prefixes in given string with greatest frequency
- How will you print numbers from 1 to 100 without using loop?
- How will you print numbers from 1 to 100 without using loop? | Set-2
- Print all leaf nodes of a Binary Tree from left to right
- Given two binary strings perform operation until B > 0 and print the result
- Print path from root to all nodes in a Complete Binary Tree
- Python | Print all string combination from given numbers
- Print all n-digit strictly increasing numbers
- Print all increasing sequences of length k from first n natural numbers
- Recursive program to print all numbers less than N which consist of digits 1 or 3 only
- Print all 3 digit repeating numbers in a very large number