Print n 0s and m 1s such that no two 0s and no three 1s are together in C Program


There should be sequence of N 0’s and M 1’s such that the sequence so formed shouldn’t contain two consecutive 0’s with three consecutive 1’s.

Input − N=5 M=9

Output − 1 1 0 1 1 0 1 1 0 1 0 1 0 1

Note − To make the above sequence, the statement (m < n-1) || m >= 2 * (n + 1) should be false if it is true than we can’t make the above sequence.

It is advisable to first go through question logic and try yourself instead of jumping to the solution directly given below.

Algorithm

START
Step 1 -> take values in ‘n’ and ‘m’
Step 2 -> Loop IF m=n-1
   Loop While m>0 and n>0
      Print 01
      Decrement m and n by 1
   End Loop While
   Loop IF n!=0
      Print 0
   End IF
   Loop IF m!=0
      Print 1
   End IF
Step 3-> Else (m < n-1) || m >= 2 * (n + 1)
Print cn’t have sequence for this
Step 4 -> Else
   Loop While m-n > 1 && n > 0
      Print 1 1 0
      Decrement m by 2 and n by 1
   End While
   Loop While n>0
      Print 1 0
   Decrement m and n by 1
   End While
   Loop While m>0
      Print 1
      Decrement m by 1
   End While
Step 5-> End Else
STOP

Example

#include <stdio.h>
#include <math.h>
int main() {
   int n =5, m=9;
   if( m == n-1 ) { //If m is 1 greater than n then consecutive 0's and 1's
      while( m > 0 && n > 0 ) { //Loop until all m's and n's
         printf("01");
         m--;
         n--;
      }
      if ( n!=0 ) //Print the remaining 0
         printf("0");
      if( m!=0 ) //Print the remaining 1
         printf("1");
   }
   else if ( (m < n-1) || m >= 2 * (n + 1) ) { //If this is true the sequence can't be made
      printf("Can't have sequence for this
");    } else {       while( m-n > 1 && n > 0 ) {          printf("1 1 0 ");          m -= 2;          n--;       }       while ( n > 0 ) {          printf("1 0 ");          n--;          m--;       }       while ( m > 0 ) {          printf("1 ");          m--;       }    }    return 0; }

Output

If we run above program then it will generate following output.

1 1 0 1 1 0 1 1 0 1 0 1 0 1

Updated on: 08-Aug-2019

117 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements