ควรมีลำดับของ 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
ขอแนะนำให้ดูตรรกะของคำถามก่อนแล้วลองด้วยตัวเองแทนที่จะข้ามไปที่วิธีแก้ปัญหาที่ให้ไว้ด้านล่างโดยตรง
อัลกอริทึม
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