Computer >> Máy Tính >  >> Lập trình >> lập trình C

In ra n 0 và m 1 sao cho không có hai số 0 và không có ba số 1 nào cùng nhau trong Chương trình C

Phải có trình tự gồm N 0 và M 1 sao cho chuỗi được tạo thành không được chứa hai chữ 0 liên tiếp với ba chữ 1 liên tiếp.

Đầu vào - N =5 M =9

Đầu ra - 1 1 0 1 1 0 1 1 0 1 0 1 0 1

Lưu ý - Để thực hiện dãy số trên, câu lệnh (m =2 * (n + 1) sẽ là false nếu đúng hơn là chúng ta không thể lập trình tự trên.

Trước tiên, bạn nên xem qua lôgic câu hỏi và thử bản thân thay vì chuyển sang giải pháp được đưa ra ngay bên dưới.

Thuật toán

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

Ví dụ

#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\n");
   } 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;
}

Đầu ra

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau.

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