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

นับจำนวนสตริงไบนารีโดยไม่มี 1 ติดต่อกันในC


ภารกิจคือการนับจำนวนสตริงไบนารีทั้งหมดที่มีความยาว n โดยไม่มี 1 ตัวติดต่อกัน

ระบบเลขฐานสองเป็นเทคนิคการแทนตัวเลขชนิดหนึ่ง เป็นที่นิยมและใช้งานในระบบดิจิทัลมากที่สุด ระบบเลขฐานสองใช้สำหรับแสดงปริมาณไบนารีซึ่งสามารถแสดงด้วยอุปกรณ์ใดๆ ที่มีสถานะการทำงานเพียงสองสถานะหรือเงื่อนไขที่เป็นไปได้ ตัวอย่างเช่น สวิตช์มีเพียงสองสถานะ:เปิดหรือปิด

ในระบบไบนารี มีเพียงสองสัญลักษณ์หรือค่าตัวเลขที่เป็นไปได้ กล่าวคือ 0 และ 1. แสดงโดยอุปกรณ์ใดๆ ที่มีสถานะการทำงานเพียง 2 สถานะหรือเงื่อนไขที่เป็นไปได้ สตริงไบนารีคือสตริงที่มีค่าไบนารีเช่น 0 หรือ 1

ตอนนี้มาทำความเข้าใจสิ่งที่เราต้องทำโดยใช้ตัวอย่าง -

ป้อนข้อมูล − n =2

ผลผลิต − จำนวนสตริงไบนารีที่ไม่มี 1 ของ 2 ติดต่อกันคือ:3

คำอธิบาย − 00, 01, 10 ดังนั้นจึงมีเพียง 3 สตริงไบนารีที่มีความยาว n ไม่มี 1 อันต่อเนื่องกัน

ป้อนข้อมูล − n =7

ผลลัพธ์ − จำนวนของสตริงไบนารีที่ไม่มี 1 ของ 7 ติดต่อกันคือ − 34

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้

  • รับอินพุต n สำหรับความยาวสตริง

  • ในฟังก์ชันการนับ เราจะนับสตริงไบนารีโดยไม่มี 1 ติดต่อกัน กำหนดอาร์เรย์สองอาร์เรย์ arr[] และ arr_2 ขนาด n และตัวแปร temp เพื่อเก็บผลลัพธ์

  • กำหนดองค์ประกอบที่ 0 ของทั้งสองอาร์เรย์เป็น 1

  • วนจาก i=1 ถึง I น้อยกว่า n.

  • ขณะอยู่ในลูป ให้ตั้งค่า arr[i] =arr[i-1]+arr_2[i-1] และ arr_2[i] =arr[i-1]

  • ตั้งค่า temp =arr[n-1]+arr_2[n-1] แล้วพิมพ์ temp

ตัวอย่าง

#include<stdio.h>
//create function to calculate binary strings without consecutive 1’s
void count(int num){
   int arr[num];
   int arr_2[num];
   int i=0, temp=0;
   arr[0] = arr_2[0] = 1;
   //loop till number isn't equals to 0
   for (i = 1; i < num; i++){
      arr[i] = arr[i-1] + arr_2[i-1];
      arr_2[i] = arr[i-1];
   }
   temp = arr[num-1] + arr_2[num-1];
   printf("Count of binary strings without consecutive 1’s of %d is : %d",num,temp);
   printf("\n");
}
int main(){
   //call the count function
   count(10);
   count(7);
   count(1);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -

Count of binary strings without consecutive 1’s of 10 is : 144
Count of binary strings without consecutive 1’s of 7 is : 34
Count of binary strings without consecutive 1’s of 1 is : 2