Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

n番目のカタラン数のC/C ++プログラム?


カタラン数は一連の数です。カタラン数は、さまざまなカウントの問題で発生する一連の自然数を形成します。多くの場合、再帰的に定義されたオブジェクトが関係します。

n番目のカタラン数のC/C ++プログラム? n番目のカタラン数のC/C ++プログラム?

  • C n 長さ2nのディック言語の数です。ディックワードは、n個のXとn個のYで構成される文字列であり、文字列の最初のセグメントにXより多くのYが含まれることはありません。たとえば、次は長さ6のディック言語です

XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY.
  • 記号Xを開き括弧として、Yを閉じ括弧として再解釈します。C n 正しく一致するn組の括弧を含む式の数をカウントします

((())) ()(()) ()()() (())() (()())
  • C n は、n + 1個の因子を完全に括弧で囲むことができるさまざまな方法の数(または2項演算子のn個のアプリケーションを関連付ける方法の数)です。たとえば、n =3の場合、4つの要素を次の5つの異なる括弧で囲みます。

((ab)c)d (a(bc))d (ab)(cd) a((bc)d) a(b(cd))
  • 二項演算子の連続するアプリケーションは、完全な二分木で表すことができます。 (すべての頂点に2つの子があるか、子がない場合、ルート化された二分木はいっぱいになります。)したがって、C n n +1枚の葉を持つ完全な二分木の数です:

サンプル

入力 -6
出力 --1 1 2 5 14 42

説明

n =0、1、2、3、4、5、6、7、8、9、10、...の最初のカタラン数は
1、1、2、5、14、42、132、429、1430、4862、

#include<iostream>
using namespace std;
long int catalan( int n) {
   if (n <= 1){
      return 1;
   }
   long int result = 0;
   for (int i=0; i<n; i++){
      result += catalan(i)*catalan(n-i-1);
   }
   return result;
}
int main(){
   for (int i=0; i<6; i++)
   cout << catalan(i) << " ";
   return 0;
}

出力

1 1 2 5 14 42

  1. PythonプログラムのN番目のカタラン数

    この記事では、n番目のカタラン数の計算について学習します。 カタラン数 再帰式-によって定義される自然数のシーケンスです。 $$ c_ {0} =1\;および\; c_ {n + 1} =\ displaystyle \ sum \ Limits_ {i =0} ^ nc_ {i} c_ {n-i} \; n \geq0の場合;$$ n =0、1、2、3、…の最初のいくつかのカタラン数は、1、1、2、5、14、42、132、429、.....です。 ... カタラン数は、再帰と動的計画法の両方で取得できます。 では、それらの実装を見てみましょう。 アプローチ1:再帰方法​​ 例 ア

  2. 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:再