カトレア番号(カタロニア語)式は、コード、典型的な例を示しました。

この記事のセクションでは、分析Cartland用牛の多くは非常に、非常に詳細であると言うことができる、https://www.cnblogs.com/yuzilan/p/10626072.html切り替え!前任者を共有していただきありがとうございます!

1.定義

カトレア番号(カタラン数)、英語名カタラン数は、数学の組み合わせは、多くの場合、順番に表示される様々なカウントの問題に表示されています。
これは、(最初のゼロのエントリで始まる)最初の数です。

C0 = 1,         
C1 = 1,         C2 = 2,          C3 = 5,          C4 = 14,          C5 = 42,
C6 = 132,       C7 = 429,        C8 = 1430,       C9 = 4862,        C10 = 16796,
C11 = 58786,    C12 = 208012,    C13 = 742900,    C14 = 2674440,    C15 = 9694845,
C16 = 35357670, C17 = 129644790, C18 = 477638700, C19 = 1767263190, C20 = 6564120420, ...

2. 公式

ここだけのシンプルで共通しています

用語式:Cnは11 + N(2NN)= 11 + nCn2n =(2N)=(N + 1)は、n CN = 1つの+ N1(N2N)は1 + N1 C2nn =(nは=! 1)!N!(2N)!

3.カタロニア語導出式

関心の式控除は、その後、小さなパートナーはBaiduがあるかもしれません(私は本当にO(╥﹏╥)Oはみ出さないように......立つことができませんでした)

4.コードの数は、カトレアを実装します

//函数功能: 计算Catalan的第n项
//函数参数: n为项数
//返回值:  第n个Catalan数
int Catalan(int n)
{
	if(n<=1) return 1;
	int *h = new int [n+1]; //保存临时结果
	h[0] = h[1] = 1;        //h(0)和h(1)
	for(int i=2;i<=n;++i)    //依次计算h(2),h(3)...h(n)
	{
		h[i] = 0;
		for(int j = 0; j < i; j++) //根据递归式计算 h(i)= h(0)*h(i-1)+h(1)*h(i-2) + ... + h(i-1)h(0)
			h[i] += (h[j] * h[i-1-j]);
	}
	int result = h[n]; //保存结果
	delete [] h;       //注意释放空间
	return result;
}

5.コード例

1の順序スタック
シーケンス1,2,3のスタックにスタック(無限大)、...、N、異なるポップシーケンスの数?

  1. まず、F(N)= Nのシーケンス型スタックシーケンス番号の数を設定します。

  2. また最初のスペースまでのスタックに最初から想定され、このプロセスのスタックの最初の序数がkです。
    具体的には、スタックが空の場合、プロセス、K = Nの終わりまで。

  3. 二つの配列への配列の1〜nの前に最初のシーケンス番号kにブランクの第一のスタック:1〜K-1、配列番号k-1であり;他方は、K + 1〜Nである、配列数は、NKです。

  4. この場合、我々は考えている場合kは、その後、乗算の原理に従って、F(n)が問題と等価である、シーケンス番号を決定 - nは、その配列の数を乗じたスタックのうちの数k-1は、配列の配列番号であります - Kのいくつかの配列(再帰的思考)、即ち、数kが選択される配列F F(NK)×(N)= F(K-1)のスタック。

  5. F(N)= F(0)、F(N-1)+:、kは1からnまで選択することができる、それは付加の原理は、種として得られた配列の総数は、配列kの異なる種類の数は、値が追加されとりますF(1)F(N-2)+ ...... + F(N-1)F(0)は、f(N)= F(0)、F(N-1)+ F(1)F(N-2) + ...... + F(N-1)F(0)

  6. この式と同じ再帰カトレアの数、すなわちF(N)= hの(N)= 1N + 1Cn2n = Cn2n-CN + 12NF(N)(N)=さh = N + 11 C2nn = C2nn -C2nn + 1。最後に、F(0)= 1、F(1)= 1ましょう。

    n番目のカタロニア語の数に等しいソリューション。


2.01配列は
、Nを与え、長さ01の2n個のシーケンスを必要とするので、ゼロのいずれかのプレフィックスシーケンス番号は1以上の数、01?の異なる配列の数
6の長さ以下であります配列:
111000 101 100 101 010 110 010 110 100

その質問のスタック解析の上記の順で、この質問にはおなじみだが、その本質は、スタック変異体の順です。

  1. すべての番号のために、それはプッシュでなければならないので、一度ポップ。我々は状態にスタックを設定し、「1」、スタックの状態が「0」に設定されています。数nとn-1 0 2Nビットのバイナリ数それらのnに対応するすべての状態。
  2. スタック操作の数は、装置1‥Nの順で待機するので、Bオペランドスタックプッシュ以上オペランド(a≤b)に等しく、出力シーケンスの総数= nで左から右に走査されます0〜N-1と2Nビットのバイナリ数、累積数は、いくつかの統合されたプログラムの1つの0数以上です。

問題の動作:

  1. 番号を記入のn 2nビットのバイナリ数Cn2nC2nnためのスキーム1で、残りのnビット0 1セルフパッキングを記入しません。
  2. 減算要件を満たしていない番組の数はまた、所望される(右スキャン左、累積数が0~1の累積数よりも大きいです)。
  3. 望ましくない特徴は、左から右へ、M + 1に結合し、M 1の0の累積数の累積数は、最初のビット、奇数ビット2M + 1、2N-2m-その後に表示されるから、走査の数NMは1に '1' NM-1および '0' ビットを有します
  4. リア0 2N-2M-1及び1ビットこれらの交換可能に、NM '0' NM-1と '1' を作り、結果は、n 1 + 1 '0' とN-によって得られるべきです「1」2N桁、すなわちA配列に不適合それら「0」及びn-1「1」のN + 1の数に対応します。
  5. 逆に、Nのいずれか+ 1「0」及びn-1「1」の組成からなる2Nビットの2進数が、複数の2 0の数ので、2n個が偶数である、それは一定の奇数ビットに現れます0累積数、累積数1を超えます。また、後部に1と0は、nビットの '0' 及びn '1' の組成物、すなわち、N + 1 '0' とN-1 '1' 2Nから成るによって2Nなって、入れ替え桁数は、非準拠に対応します。
  6. したがって、望ましくない2N、N + 1ビット、 '0'、N-1 '1' は、その対応して配置されています。
  7. もちろん、それはプログラム番号CN + 12nC2nn + 1の要件を満たしていません。これは、出力シーケンスF(N)= hを(Nの合計数をもたらす )= Cn2n-CN + 12N = 1N + 1Cn2nf(N)= hの(N)= C2nn -C2nn + 1 = N + 11 C2nn
    n番目のカタロニア語の数に等しいソリューション

3. '+1' 1「シーケンス

N及びN + 1番目のA1 -1を構成する2n個の項目の数、A2、⋅⋅⋅、a2na1、A2、⋅⋅⋅、A2N、そのプロパティの一部を満たす非負、すなわち、A1 + A2 +⋅⋅⋅+ AK> = 0A1 + A2 +⋅⋅⋅+ AK> = 0、(K = 1,2、···、2N)、このシーケンス番号を有する異なりますか?

実施例01の分析およびコードこの配列分析同じで、数nは、このシリーズの第カタラン数に等しい、すなわち、それはここでは繰り返しません。
n番目のカタロニア語の数に等しいソリューション。


4.括弧内のシーケンス

nはどのように多くの括弧道のマッチングペア?
シーケンス3、例えば、ブラケットの正規ブラケットペアが構成されているC3 = 5C3 = 5件の評価:((()))、()(())、()()()、(())()、((() ))。

その本質は、「01シリーズ」バリアントである
我々は状態に括弧を残した「1」、右括弧の状態に「0」。nはn個すべての状態「1」及びnの括弧「0」の2Nビットの2進数に対応します。
括弧が残さなければならないので、右括弧は、括弧内の2Nビットのバイナリ数の出力と一致するように、N =「1」及びn「0」非累積の数で構成することにより、左から右へ走査し、正しい配列の総数プログラムのいくつかの種類がゼロよりも少ない数を蓄積しました。

n番目のカタロニア語の数に等しいソリューション。

5.変更の問題をキープ

2nの個人的な5ドルは、映画のチケットのチケットを買う人ごとに1つだけを買うが、導体は、変更のお金を与えるものではありませんします。ここで、nは個々のほかに個人が保有する5ドル、nは10ドルを保持し、変更の場合には困難頼んは発生しません、どのように多くのキューイング?

その本質は、変種の「01シリーズ」である。
我々は状態に5ドルを保持する「1」、状態に10ドルを保持している「0」。個々のn-2n個とn個の「0」の2Nビットのバイナリ数「1」に対応するすべての状態。
あなたは5ドルを持っている人は、10ドルを保持する男の前に来ている必要がありますので、変更が困難に起こることができないので、スキャンの方法をキューイングするため困難な変更の総数は右に左によって発生しません与えます= N「1」及びn「0」2Nの2進数、0の数を蓄積し、いくつかのプログラム以上の総数のビット。

n番目のカタロニア語の数に等しいソリューション。

6.マトリックスチェーン

P = A1×A2×A3×......乗算に基づいて、連想され×、順序が変化しない、括弧の対だけが製品、プログラムのどのいくつかのブラケットを表しますか?

:(アイデアは、「スタックの順序」考えと一致しています

  1. これは、ブラケットの2つの部分のそれぞれ2つの部分にP-分け、最初の括弧によって考慮することができ。(再帰分割統治思想)

  2. 例えば(A1)×(A2×A3 ...×)、その後に(A1)及び(A2×A3×...)それぞれのブラケットと、(A1×A2)×(A3 ...×)に分割した場合、その後、再び(A2×A1)及び(A3 ...×)が括弧しました。

  3. (N)FのためのいくつかのレッツN行列ブラケットスキームは、問題の解である
    F(N)= F(1 )* F(N-1)+ F(2)* F(N-2) + F(3)*(F N-3)+ F(N-1)*(1)F。F(1)*(N F -1) (A1)×(A2×A3に表す ...×) 二つの部分、及びブラケットのそれぞれに。

いくつかの計算スタート、F(1)= 1、F(2)= 1、F(3)= 2、F(4)= 5。結合再帰、そのFを見つける(N)H(N-1)に等しいです。

カタロニア語番目番号N-1に等しく、その溶液。

7.バイナリカウンタ

バイナリからなるNノードが(非リーフノードは2人の息子を持っている)があり、状況の多くの種類がありますか?
N + 1枚のバイナリツリーの葉の数がありますか?

これらの2つの問題は、実際には同じ問題があります。
例:N = 3の場合:

ここに画像を挿入説明
アイデア:( 再帰的な分割統治の考え方

  1. ...、T(T(1、N-2)、T(0、N-1)、ルートノードを占有する必要があり、残りのn-1個のノードは、次の分布を持つことができる、と考えることができますN-1,0)、T(0、N-1)、T(1、N-2)、...、T(N-1,0)。T(i、j)はiは、jの右の部分木は、ノードを含むルートノードを含む左側のサブツリーを表すT(i、j)を設定します。
  2. T(0、I-1)、T(1、I-2)、...、T:その後、場合ルートT(i、j)がT(i、j)とし、左側のサブツリー以下の分布を有するため(I-1,0)、T(0、I-1)、T(1、I-2)、...、T(I-1,0)、その右サブツリー割り当て:T(0、J-1 )、T(1、J-2)、...、T(J-1,0)、T(0、J-1)、T(1、J-2)、...、T(J-1,0)
  3. fは次いで(N)Fの溶液を、リセット(N)= F(0)* F(N-1)+ F(1)* F(N-2)+ ... + F(N-2)* F (1)+ F(N-1)* F(0)。(0)= 1 fを仮定次いで(1)= 1、F(2)= 2、F、F(3)= 5。再帰的な結合、すなわちF(n)を見つけるH(N)に等しいです。

n番目のカタロニア語の数に等しいソリューション。


8.凸多角形分割

ポリゴンによりn角形の対角線内部nと交差していないでは、n角形は複数の三角形に分割され、どのように多くのプログラム分割を尋ねたのですか?

:五角形、分割方式の以下の5種類の有する
ここに画像を挿入説明
六角形分割スキームの次の14種類:

ここに画像を挿入説明
アイデア:( 再帰的な分割統治の考え方

  1. 塩基として多角形の凸側は、このエッジは、2つの頂点AとBが設けられています。三つの部分、三角形の真ん中に分割することができる凸多角形の残りの一つの頂点から選択される、2つの左と右の辺を約2つの凸多角形について解くと、凸多角形です。
  2. 問題のソリューションは、nが(N)F、頂点の数を示し、(N)F = F(2提供 )* F(N-1)+ F(3)* F(N-2)+ ... + fは( N-2)* F(3 )+ F(N-1)* F(2)。
    ここで、F(2)*(F N-1) :で表される三角形の3つの隣接頂点、他の2つの部分の頂点の数(直線2点)2であり、かつn-1。
    ここで、F(3)*(F N-2) :で表される凸多角形が2 N-三つの部分、それぞれ右及び三角形3の左側の頂点に分割され、ポリゴンの頂点を有します。
  3. 提供F(2)= 1の場合、(3)= 1、F(4)= 2、F(5)= F 5。結合再帰、そのFを見つける(N)H(N-2)に等しいです。

N-2番目のカタラン数に等しいソリューション。


円の線分上の9 N

2N円上の選択された点は、点は、線分の数nを求めることが互いに素方法ペアで一緒に接続されていますか?

アイデア:( 再帰的な分割統治の考え方

  1. 前記「0」番の塩基点で、時計回り方向に、他の点は、順次番号付けされます。
  2. 次いで数(二点間の奇数を含むそれ以外の場合は、点を単離することがバインドされている)「0」番号の点に接続し、奇数でなければならないです。すなわち、数は任意の時点で「0」であり、奇数の点は、セグメントを形成するように連結された番号。
  3. 選択されたセット「0」基点Aは、点Bは、それに接続されている、すべての点AとBは、2つの部分に分割され、パートAは、Bの左側に配置され、それ以外の部分は、A、Bの右側に配置されています 次に、2つの部分の各々を解決することができます。
  4. リセット溶液F(N)、次いでF(N)= F(0 )*(N-1)F + F(1)*(N-2)F + F(2)*(N-3)F + ... + F(N-2 )* F(1)+ F(N-1)* F(0)。
    ここで、F(0)* fは、( n-1)は番号0がゼロ(0ラインセグメントに接続することができる)、左側に配置され、その右この時点で配置されている番号である点と点の数1に接続されている表します点は、(N-1ラインセグメントに接続することができる)、2N-2です。などなど。
  5. その結果、F(0)= 1、F(1)= 1、F(2)= 2。
  6. 再帰的な結合、すなわちF(n)を見つけるH(N)に等しいです。

n番目のカタロニア語の数に等しいソリューション。


10.単調パス

東ブロック北彼の家の1ブロック内のn個のn大都市の弁護士は、彼が仕事に毎日に2n個のブロックを歩きました。彼が交差しない(ただし、タッチすることができ)ない場合は、自宅からオフィスへの対角線、その後、どのように多くの可能な方法はありますか?

分析:

  1. 格子点の右上に終わる格子点の左下隅から単調経路は、各ステップアップまたは右にあります。XはYの略、「右」の略で、「アップ。」
  2. プレフィックスは「X」の個数が「Y」での数以上であるステップの任意の数に見出すことができます。
  3. 質問はそれから「01シリーズ」の問題の変種「は、配列XY」の問題に変換される:Nが得られるのであれば、接頭シーケンスXとYの数が数より少なくならないように、長さ2nのXYのシーケンスを必要としますどのように多くの異なるシーケンスXY?

例:N =の場合には4:
ここに画像を挿入説明

n番目のカタロニア語の数に等しいソリューション。

11.充填階段状

Nの段差パターンの高さ、Nで満たされた矩形の数?

例は:N =の場合には4
ここに画像を挿入説明
思考:( 再帰パーティション思想
1. N-1の段差パターンの高さ、nは階段パターンに高さの段差パターンの高さは、n個に分割されていますセクション。

1.問題の解決策は、nがNまたはN長方形の段差パターンの高さを表し、F(n)を設定します。

簡単まずルックN = 1は、(1)1 = Fを取得し、同様にF(2)= 2。ここで、fは、(1)1。階段状図の高さを表しているだけでなく、長さまたは幅を示すことが1であり、nは互いに矩形に等しくありません。

3.那n=3呢?其实,n=3即在n=2的阶梯图形上再添加一个高度为1宽度为3(或高度为3宽度为1)的长方形,而且只有两种添加方法,即要么在左边添加,要么在上边添加,这样才能构成一个高度为n=3的阶梯状图形。

4.我们设f(0)=1。f(0)代表:一边为n,一边为1的长方形。

5.那么f(3)=f(0)*f(2)+f(1)*f(1)+f(2)*f(0)=5。
其中,f(0)*f(2)表示:高度为3的阶梯状图形含有这两个部分,一个部分是高度为2的阶梯状图形,另外一个部分是一边为3一边为1的长方形。
其中,f(1)*f(1)表示:高度为3的阶梯状图形含有这两个部分,都是高度为1的阶梯状图形。

6.那么f(4)=f(0)*f(3)+f(1)*f(2)+f(2)*f(1)+f(3)*f(0)=14。
其中,f(0)*f(3)表示:高度为4的阶梯状图形含有这两个部分,一个部分是高度为3的阶梯状图形,另外一个部分是一边为4一边为1的长方形。
其中,f(1)*f(2)表示:高度为4的阶梯状图形含有这两个部分,一个部分是高度为1的阶梯状图形或者长或宽有一条为1且另一条不等于n的长方形,另外一个部分是高度为2的阶梯状图形。

7.结合递推式,不难发现f(n) 等于h(n)。

其解等于第n个Catalan数。

12. 摞碗问题

饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式?

此典例解析是“出栈问题”的变式,其解析一模一样,即此数列的个数等于第n个Catalan数,此处就不再赘述。

其解等于第n个Catalan数。

13. 汽车胡同加油问题

一个汽车队在狭窄的路面上行驶,不得超车,但可以进入一个死胡同去加油,然后再插队行驶,共有n辆汽车,问共有多少种不同的方式使得车队开出城去?

この解像度は、「典型的な例である問題ポッピングすなわち、この数がカタロニア語のn番目の数の列の数に等しい、同じ構文解析バリアント」は、本明細書で繰り返しません。

n番目のカタロニア語の数に等しいソリューション。

14.質問には、図書を予約します

ライブラリーキュー中の2N人の合計、nはまた、「インタビュー集、」本で、nはそこには面接がなく、合計をラインアップしてもらう。この時点で借り「のインタビュー集、」この本、図書館の本の中で?

分析:
人々はまだライブラリは常に-C2nn-1以上の人、すなわちCn2n-CN-12nC2nnで予約する
。これは、「ホーミング問題」変異体、すなわちを解析する典型的な例であり、この数は、列の数に等しいですカタルーニャのn個の数。

n番目のカタロニア語の数に等しいソリューション。

15.高キューイング問題

2列に配置された高さの異なる人々を、2N、各行はローからハイに配置されますが、配置に対応した二人目の並列処理の最初の行が高く、どのように多くを尋ねなければなりませんか?

n番目のカタロニア語の数に等しいソリューション。

おすすめ

転載: blog.csdn.net/weixin_40688217/article/details/94750175