- Related Questions & Answers
- Average numbers in array in C Programming
- C Program to Multiply two Floating Point Numbers?
- Sum of the numbers up to N that are divisible by 2 or 5 in c programming
- Sum of first n natural numbers in C Program
- Sum of squares of first n natural numbers in C Program?
- Sum of squares of the first n even numbers in C Program
- A program to check if a binary tree is BST or not in C ?
- Find all the numbers in a string using regular expression in Python
- Lambda expression in Python to rearrange positive and negative numbers
- CSMA/CD with the Binary Exponential Backoff
- Binary array after M range toggle operations?
- Array sum after dividing numbers from previous?
- Arrange first N natural numbers such that absolute difference between all adjacent elements > 1?
- Anti Clockwise spiral traversal of a binary tree?
- An interesting solution to get all prime numbers smaller than n?

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

In this problem, we have to find some binary numbers which have no consecutive 1s. In a 3-bit binary string, there are three binary numbers 011, 110, 111, who have consecutive 1s, and five numbers are there which have no consecutive 1s. So after applying this algorithm for 3-bit numbers, the answer will be 5.

If a[i] be the set of binary numbers, whose number of bits are i, and not containing any consecutive 1s, and b[i] is the set of binary number, where number of bits are i, and containing consecutive 1s, then there are recurrence relations like −

a[i] := a[i - 1] + b[i - 1]

b[i] := a[i - 1]

This algorithm takes number of bits for a binary number. Let the input is 4.

It returns the number of binary strings which have no consecutive 1’s.

Here the result is − 8. (There are 8 binary strings which has no consecutive 1’s)

Input: n is the number of bits. Output: Count how many numbers are present which have no consecutive 1. Begin define lists with strings ending with 0 and ending with 1 endWithZero[0] := 1 endWithOne[0] := 1 for i := 1 to n-1, do endWithZero[i] := endWithZero[i-1] + endWithOne[i-1] endWithOne[i] := endWithZero[i-1] done return endWithZero[n-1] + endWithOne[n-1] End

#include <iostream> using namespace std; int countBinNums(int n) { int endWithZero[n], endWithOne[n]; endWithZero[0] = endWithOne[0] = 1; for (int i = 1; i < n; i++) { endWithZero[i] = endWithZero[i-1] + endWithOne[i-1]; endWithOne[i] = endWithZero[i-1]; } return endWithZero[n-1] + endWithOne[n-1]; } int main(){ int n; cout << "Enter number of bits: "; cin >> n; cout << "Number of binary numbers without consecutive 1's: "<<countBinNums(n) << endl; return 0; }

Enter number of bits: 4 Number of binary numbers without consecutive 1's: 8

Advertisements