English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Donné un entier n; la tâche consiste à trouver le numéro catalan à la position n. Par conséquent, avant d'exécuter le programme, nous devons savoir ce que sont les nombres catalans?
Les nombres catalans sont une séquence de nombres naturels qui apparaissent sous forme de divers problèmes de comptage.
Le nombre catalan C0, C1, C2,... Cn est déterminé par la formule-
$$c_ {n} = \frac {1} {n + 1} \binom {2n} {n} = \frac {2n!} { (n + 1) !n!} $$
Pour chaque n = 0,1,2,3,... Le catalan de ce nombre est1,1,2,5,14,42,132,429,1430,4862 ...
Par conséquent, si nous entreons n = 3Nous devrions obtenir cela du programme5En tant que sortie
Applications de certains nombres catalans-
Calculer le nombre de binary search trees possibles avec n clés.
Trouver le nombre d'expressions contenant n paires de parenthèses correspondantes. 3De même, les expressions d'encadrages possibles sont ((()()), ()(()), ()()(), (()()), ()(()()).
Chercher des méthodes pour connecter les points sur des arcs de cercle non intersectants, etc.
Entrée: n = 6 Sortie: 132 Entrée: n = 8 Sortie: 1430
Nous utiliserons pour résoudre le problème donné-
Prendre et entrer n.
Vérifier si n <= 1ensuite, retourner1
Boucler de i = 0 à i <n et i ++
Pour chaque i, définir le résultat=le résultat+(catalan(i)* catalan(ni-1))
Retourner et imprimer le résultat.
Début Étape 1 -> Dans la fonction unsigned long int catalan(unsigned int n) Si n <= 1 alors, Retour 1 Fin si Déclarer une variable unsigned long res = 0 Boucle pour i=0 et i<n et i++ Définir res = res + (catalan(i)*catalan(n-i-1)) Fin de la boucle Retourner res Étape 2 -> int main() Declare une entrée n = 6 Imprimer "catalan est : puis appeler la fonction catalan(n) Arrêt
#include <stdio.h> //使用递归方法找到加泰罗尼亚数字 unsigned long int catalan(unsigned int n) { //基本情况 if (n <= 1) return 1; //langue catalane(n) est langue catalane(i)*langue catalane(n-1)的总和 unsigned long int res = 0; for (int i=0; i<n; i++) res += catalan(i)*catalan(n-i-1); return res; } //主要功能 int main() { int n =; 6; printf("catalan est :%ld\n", catalan(n)); return 0; }
输出结果
catalan est :132