乙個簡單求catalan數 的程式

2021-05-21 15:09:02 字數 623 閱讀 3153

思路 catalan(n) = 1(n+1)c(2n,n)

c(2n,n)就用普通的迭代加法來實現

求c(2n,n),每次迭代加法,並不需要把所有的組合都求出來。只需要求幾個即可。

示意程式如下:

/*** 這個應該很快可以計算c(2n,n)要使用它計算cantalan數,應該比較好。這個迭代演算法,儲存空間用的是 8個屬於o(1),計算量恰為 4*n,屬於o(n)

*//**

* 這個應該很快可以計算c(2n,n)要使用它計算cantalan數,應該比較好。這個迭代演算法,儲存空間用的是 8個屬於o(1),計算量恰為 4*n,屬於o(n)

*/class combination

;public:

~combination(void){};

//快速計算c(2n,n)

int n;

int a[2][4];

int calccmbtl( int n)

else

j++;

debugout();

}if( n &0x01)

else

}public:void debugout()

};calccmbtl(n)/n+1 就是catalan數了。 

求乙個數的反序數

package com.laodai author tony 求任意整數的反序數 例如乙個數字54321,反序數就是12345 分析 求反序數,我們需要將乙個個的數字給拆分開。然後再 進行組合就可以達到目的。例如分離出各位的1,那麼我們只需要將54321除以10求他的餘數 就可以了。54321除以1...

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...

乙個求隨機數的程式

程式說明 這是乙個求隨機數的程式,隨機數的個數為n,可以手動輸入,因為我定 義的 陣列 是ran 1000 所以我的是產生0 1000內的不重複的隨機數。include include include include include voidrandom num void void main voi...