주어진 작업은 연속적인 1 없이 길이가 n인 모든 이진 문자열의 수를 계산하는 것입니다.
이진법은 숫자 표현 기법의 한 유형입니다. 가장 대중적이고 디지털 시스템에서 사용됩니다. 이진 시스템은 두 가지 작동 상태 또는 가능한 조건만 있는 장치로 나타낼 수 있는 이진 양을 나타내는 데 사용됩니다. 예를 들어 스위치에는 열림 또는 닫힘의 두 가지 상태만 있습니다.
이진 시스템에는 2개의 기호 또는 가능한 숫자 값, 즉 0과 1만 있습니다. 2개의 작동 상태 또는 가능한 조건만 있는 장치로 표시됩니다. 이진 문자열은 이진 값, 즉 0 또는 1을 포함하는 문자열입니다.
이제 예제를 사용하여 무엇을 해야 하는지 이해합시다 -
입력 - n =2
출력 − 연속 1/2가 없는 이진 문자열의 개수:3
설명 − 00, 01, 10이므로 길이가 n이고 연속 1이 없는 이진 문자열이 3개뿐입니다.
입력 - n =7
출력 − 연속 1/7이 없는 이진 문자열의 수는 − 34입니다.
아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.
-
문자열 길이에 대해 n 입력
-
count 함수에서 연속 1이 없는 이진 문자열을 계산하고 크기가 n인 두 개의 배열 arr[] 및 arr_2를 정의하고 결과를 저장할 변수 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]로 설정하고 온도를 출력합니다.
예시
#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