思路 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...