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

n번째 카탈루냐 번호를 위한 C 프로그램

<시간/>

주어진 정수 n; 작업은 해당 n번째 위치에서 카탈로니아어 번호를 찾는 것입니다. 따라서 프로그램을 수행하기 전에 카탈루냐 숫자가 무엇인지 알아야 합니까?

카틀란 수는 다양한 계산 문제의 형태로 발생하는 자연수의 수열입니다.

카탈로니아 숫자 C0, C1, C2,… Cn은 공식 −

에 의해 구동됩니다.

$$c_{n}=\frac{1}{n+1}\binom{2n}{n} =\frac{2n!}{(n+1)!n!}$$

모든 n =0, 1, 2, 3, …에 대한 소수의 카탈루냐 숫자는 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, …입니다.

따라서 n =3을 입력했다면 프로그램의 출력으로 5를 얻어야 합니다.

카탈루냐 숫자의 몇 가지 적용 -

  • n개의 키를 사용하여 가능한 이진 검색 트리의 수를 계산합니다.
  • n 쌍의 괄호가 포함된 표현식 중 올바르게 일치하는 수를 찾습니다. n =3과 마찬가지로 가능한 괄호 표현식은 ((())), ()(()), ()()(), (())(), (()())입니다.
  • 서로 분리된 현에서 점을 연결하는 여러 가지 방법 등을 찾습니다.

예시

입력:n =6출력:132입력:n =8출력:1430

주어진 문제를 해결하기 위해 사용할 접근 방식 -

  • 수용 및 입력 n.
  • n <=1이면 1을 반환하는지 확인
  • i=0에서 i
  • 모든 i 세트 결과 =결과 + (catalan(i)*catalan(n-i-1))
  • 결과를 반환하고 인쇄합니다.

알고리즘

단계 1 시작 -> 함수에서 unsigned long int catalan(unsigned int n) n <=1이면 1을 반환합니다. unsigned long 변수를 선언하면 1을 반환합니다. 끝 res =0 루프 i=0 및 i int main() 입력 선언 n =6 Print "catalan is :then call function catalan(n)Stop 

예시

#include // 재귀적 접근 방식을 사용하여 카탈루냐 번호 찾기 unsigned long int catalan(unsigned int n) { // 기본 케이스 if (n <=1) return 1; // catalan(n)은 catalan(i)*catalan(n-i-1)의 합입니다. unsigned long int res =0; for (int i=0; i 

출력

카탈루냐어:132