Maison > développement back-end > C++ > Programme C pour le nième numéro catalan

Programme C pour le nième numéro catalan

WBOY
Libérer: 2023-08-28 14:25:14
avant
977 Les gens l'ont consulté

Programme C pour le nième numéro catalan

Étant donné un n entier; la tâche est de trouver le numéro catalan sur cette nième position. Donc, avant de faire le programme, nous devons savoir ce qu'est un nombre catalan ?

Les nombres catalans sont la séquence de nombres naturels, qui se présente sous la forme de divers problèmes de comptage de nombres.

Les nombres catalans C0, C1, C2,… Cn sont piloté par la formule −

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

Le quelques nombres catalans pour chaque n = 0, 1, 2, 3, … sont 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, …

Donc si nous entrons n =3 nous devrions obtenir 5 comme résultat du programme

Certaines des rares applications des nombres catalans

  • Compter le nombre d'arbres de recherche binaires possibles avec n clés.
  • Trouver le nombre d'expressions contenant n paire de parenthèses qui correspondent correctement. Comme pour n = 3, l'expression entre parenthèses possible serait ((())), ()(()), ()()(), (())(), (()()).
  • Trouver le numéro de façons de connecter des points sur des accords disjoints de cercle, et bien d'autres encore.
  • 输入n。

检查如果n < ; = 1.结果。

算法

Input: n = 6
Output: 132
Input: n = 8
Output: 1430
Copier après la connexion
Exemple的中文翻译为:

示例
    Start
       Step 1 -> In function unsigned long int catalan(unsigned int n)
          If n <= 1 then,
             Return 1
          End if
          Declare an unsigned long variable res = 0
          Loop For i=0 and i<n and i++
             Set res = res + (catalan(i)*catalan(n-i-1))
          End Loop
          Return res
       Step 2 -> int main()
       Declare an input n = 6
       Print "catalan is : then call function catalan(n)
    Stop
    Copier après la connexion
  • 输出
  • #include <stdio.h>
    // using recursive approach to find the catalan number
    unsigned long int catalan(unsigned int n) {
       // Base case
       if (n <= 1) return 1;
       // catalan(n) is sum of catalan(i)*catalan(n-i-1)
       unsigned long int res = 0;
       for (int i=0; i<n; i++)
          res += catalan(i)*catalan(n-i-1);
       return res;
    }
    //Main function
    int main() {
       int n = 6;
       printf("catalan is :%ld</p><p>", catalan(n));
       return 0;
    }
    Copier après la connexion

  • Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal