ภารกิจคือการนับจำนวนสตริงไบนารีทั้งหมดที่มีความยาว 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