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の場合と同様に、可能な括弧式は((()))、()(())、()()()、(())()、(()())になります。
- 円の互いに素な和音上の点を接続する方法の数などを見つける。
例
Input: n = 6 Output: 132 Input: n = 8 Output: 1430
特定の問題を解決するために使用するアプローチ −
- nを取得して入力します。
- n <=1の場合はチェックし、1を返します
- i=0からi
- すべてのiセットの結果=結果+(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
例
#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\n", catalan(n)); return 0; }
出力
catalan is :132
-
n番目のフィボナッチ数のPythonプログラム
この記事では、n番目のフィボナッチ数を計算します。 フィボナッチ数 以下に示す漸化式によって定義されます- Fn = Fn-1 + Fn-2 あり F 0 =0およびF1 =1。 まず、フィボナッチ数はほとんどありません 0,1,1,2,3,5,8,13,.................. フィボナッチ数を計算できます 再帰と動的計画法の方法を使用します。 それでは、Pythonスクリプトの形式での実装を見てみましょう アプローチ1:再帰方法 例 #recursive approach def Fibonacci(n): if n<0: &
-
n番目のカタラン数のPythonプログラム
この記事では、n番目のカタラン数の計算について学習します。 カタラン数 再帰式-によって定義される自然数のシーケンスです。 $$ C_ {0} =1 \:and \:C_ {n + 1} =\ displaystyle \ sum \ Limits_ {i =0} ^ n C_ {i} C_ {n-i} for \:n \ geq0; $$ n =0、1、2、3、…の最初のいくつかのカタラン数は 1、1、2、5、14、42、132、429、..............です。 .... カタラン数は、再帰と動的計画法の両方で取得できます。その実装を見てみましょう。 アプローチ1:再