Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พิมพ์ n 0s และ m 1s เพื่อให้ไม่มี 0 สองตัวและไม่มี 1 สามตัวอยู่ในโปรแกรม C


ควรมีลำดับของ N 0 และ M 1 โดยที่ลำดับที่เกิดขึ้นไม่ควรมี 0 สองตัวที่ต่อเนื่องกันและมี 1 ตัวที่ติดกัน 3 ตัว

ป้อนข้อมูล − N=5 M=9

ผลผลิต − 1 1 0 1 1 0 1 1 0 1 0 1 0 1

หมายเหตุ − เพื่อสร้างลำดับข้างต้น คำสั่ง (m =2 * (n + 1) ควรเป็นเท็จหากเป็นจริงมากกว่าที่เราไม่สามารถสร้างลำดับข้างต้นได้

ขอแนะนำให้ดูตรรกะของคำถามก่อนแล้วลองด้วยตัวเองแทนที่จะข้ามไปที่วิธีแก้ปัญหาที่ให้ไว้ด้านล่างโดยตรง

อัลกอริทึม

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

ตัวอย่าง

#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;
}

ผลลัพธ์

หากเรารันโปรแกรมด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

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