Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 연속 1이 없는 이진 문자열의 수 계산


주어진 작업은 연속적인 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