search
HomeBackend DevelopmentC++C program for the nth Catalan number

C program for the nth Catalan number

Given an interger n; the task is to find the Catalan Number on that nth position. So, before doing the program we must know what is a Catalan Number?

Catlan numbers are the sequence of natural numbers, which occurs in the form of various counting number problems.

Catalan numbers C0, C1, C2,… Cn are driven by formula −

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

The few Catalan numbers for every n = 0, 1, 2, 3, … are 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, …

So if we entered n =3 we should get 5 as an output from the program

Some of few applications of Catalan numbers

  • Counting the number of possible binary search trees with n keys.
  • Finding the number of expressions containing n pair of parenthesis which are correctly matched. Like for n = 3 the possible parenthesis expression would be ((())), ()(()), ()()(), (())(), (()()).
  • Finding number of ways to connect point on circle disjoint chords, and many more.

Example

的中文翻译为:

示例

Input: n = 6
Output: 132
Input: n = 8
Output: 1430

解决给定问题的方法

  • 输入n。
  • 检查如果n
  • 循环从i=0到i
  • 对于每个i,设置result = result (catalan(i)*catalan(n-i-1))
  • 返回并打印结果。

算法

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

Example

的中文翻译为:

示例

#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;
}

输出

catalan is :132

The above is the detailed content of C program for the nth Catalan number. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:tutorialspoint. If there is any infringement, please contact admin@php.cn delete
C程序计算3D空间中三个点之间的距离C程序计算3D空间中三个点之间的距离Aug 29, 2023 pm 12:41 PM

给定一个三维平面,因此有三个坐标,任务是找到给定点之间的距离并显示结果。在三维平面上,有三个坐标轴,x轴的坐标为(x1,y1,z1),y轴的坐标为(x2,y2,z2),z轴的坐标为(x3,y3,z)。计算它们之间的距离有一个直接的公式如下所示$$\sqrt{\lgroupx2-x1\rgroup^{2}+\lgroupy2-y1\rgroup^{2}+\lgroupz2-z1\rgroup^{2}}$$下面是表示三个不同坐标轴及其坐标的图示下面使用的方法如下&minus;输入坐标(x1,

二项式系数表的C程序二项式系数表的C程序Aug 26, 2023 pm 12:49 PM

Givenwithapositiveintegervaluelet&rsquo;ssay&lsquo;val&rsquo;andthetaskistoprintthevalueofbinomialcoefficientB(n,k)where,nandkbeanyvaluebetween0tovalandhencedisplaytheresult.WhatisBinomialCoefficientBinomialcoefficient(n,k)istheorderofcho

最小成本路径的C程序最小成本路径的C程序Aug 26, 2023 pm 06:17 PM

在这里,我们将解决C语言中的最小成本路径问题。这意味着在2D矩阵上完成,其中每个单元格都有一个移动成本。我们必须找到一条从左上角到右下角且行程成本最小的路径。您只能从给定单元格向下和右下遍历单元格。为了解决这个特定问题,动态编程比递归更好。给定成本矩阵cost[][]和位置(m,n),我们必须编写一个函数,返回从(0,0)到达(m,n)的最小路径成本到达(m,n)的路径的总成本是该路径上所有成本的总和(包括源和目的地)。假设−所有成本是积极的。输入矩阵中不存在负成本循环示例查找到(2,2)的最小

在C语言中编写一个程序,打印出N个五角数的序列在C语言中编写一个程序,打印出N个五角数的序列Aug 25, 2023 pm 02:25 PM

程序说明五维体数是帕斯卡三角形的任意一行中第五个数字,从左到右或从右到左开始,起始于5项行14641。这种数字的前几个是1,5,15,35,70,126,210,330,495,715,1001,1365Pentatopenumbersbelongintheclassoffiguratenumbers,whichcanberepresentedasregular,discretegeometricpatterns.Theformulaforthenthpentatopicnumberis$$\l

C++程序以找到给定值的反正切C++程序以找到给定值的反正切Aug 26, 2023 am 10:09 AM

我们在三角学中最常使用的比率包括正弦、余弦、正切等等。您可以使用角度来计算这些比率。如果我们知道比率值,我们还可以使用反三角函数计算角度。本课程将向您展示如何使用C++的反正切(arctan)函数,使用正切值(以弧度为单位)计算角度。atan()函数使用atan()技术和反三角正切函数计算角度。C++标准库包含这个函数。在使用这种方法之前,我们必须导入cmath库。此方法返回以弧度为单位的角度,并采用正切值作为参数。以下使用简单的语法-语法#include<cmath>atan(&l

C++程序:替换特定索引处的字符C++程序:替换特定索引处的字符Aug 25, 2023 pm 10:53 PM

字符串是一组字符。我们也可以将它们称为字符数组。考虑到一个由字符串组成的字符数组,这些字符串具有指定的索引和值。有时候我们可以对字符串进行一些修改,其中一种修改是替换字符通过提供一个特定的索引。在本文中,我们将看到如何替换一个字符从一个specificindexinsideastringusingC++.语法String_variable[&lt;givenindex&gt;]=&lt;newcharacter&gt;在C++中,我们可以使用索引访问字符串字符。在

C程序输入一个由空格分隔的整数序列的数组C程序输入一个由空格分隔的整数序列的数组Aug 25, 2023 am 11:33 AM

问题陈述编写一个C程序,以空格分隔的整数作为数组输入。SampleExamples输入12345输出‘Arrayelementsare-’1,2,3,4,5Explanation的中文翻译为:解释输入包含5个以空格分隔的整数。输入997687542356878967343423输出‘Arrayelementsare-’99,76,87,54,23,56,878,967,34,34,23Explanation的中文翻译为:解释输入包含11个以空格分隔的整数。方法一在这种方法中,我们将把输入中的以空

计算六边形内切圆内的正方形面积的C程序计算六边形内切圆内的正方形面积的C程序Aug 28, 2023 pm 08:41 PM

给定一个正六边形内接的圆内切的正方形,我们需要找到正方形的面积,为此我们需要找到正方形边长和正六边形边长之间的关系。正六边形内接圆的半径的数学公式为,r=A&radic;3/2由于正方形的对角线等于圆的直径,所以半径和边长之间的关系为,a=&radic;r根据正六边形的边长,a=&radic;3A/&radic;2所以,正方形的面积,面积=a2=(&radic;3A/&radic;2)2示例#include<stdio.h>#inclu

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.