乙個集合的演算法問題的解決

2021-05-25 21:03:44 字數 731 閱讀 2341

在qszhoufuge

那裡看到「乙個集合的演算法問題」題目如下:

設計演算法以求解從集合中選取k(k<=n)個元素的所有組合。例如,從集合中選取2個元素的所有組合的輸出結果為:1 2,1 3,1 4,2 3, 2 4,3 4。

早上在家的時候隨手寫了乙個用迴圈解決的,因為沒環境測試,下午有時間的時候測試發現錯了,哈哈。非常抱歉啊。

後來一想,其實這個不難,用遞迴可以很好解決,於是乎就靜下心來思考,其實用遞迴實現真的不複雜,這次終於一次性通過了,^_^

實現演算法如下(經過測試的):

#include

//顯示組合

//ncount:組合的個數

//p:陣列指標

inline void p2s(int ncount,int *p)

//遞迴組合

//nstart 開始數

//nmax: 最大數值

//ncount:組合的個數

//nindex:組合索引(組合中的第幾個數,0開始)

//p:陣列指標

void func0(int nstart,int nmax,int ncount,int nindex,int * p)

else} }

//組合演算法

//n:範圍:1~n

//ncount:組合的個數

void func(int n,int k)

int _tmain(int argc, _tchar* argv)

乙個sql問題的解決

表內容 2005 05 09 勝 2005 05 09 勝 2005 05 09 負 2005 05 09 負 2005 05 10 勝 2005 05 10 負 2005 05 10 負 輸出 比賽時間 勝 負 2005 05 09 2 2 2005 05 10 1 2 自己完成建表語句,插入語句...

輸出乙個集合的所有子集(演算法)

輸出乙個集合的所有子集 演算法 時間複雜度很顯然,最少也是2 n,空間複雜度,是n,比較簡單 每個元素要麼在子集中,要麼不在,用 j 的二進位制形式的每一位代表陣列a中對應的位置的元素是否在子集中,例如,當i 5時,j i 5,那麼j 0101 我們對應的輸出 a 0 a 2 這個過程在while迴...

乙個演算法問題

今天上午上班由於沒什麼事做,就看看書,發現乙個演算法問題,開始看感覺貌似很簡單,但是越想越有意思。1,題目描述 給定乙個十進位制的正整數n,寫下從1開始到n所有出現 1 的個數。例如 n 2 寫下 1 2 出現了乙個1 n 12,寫下1,2,3,4,5,6,7,8,9,10,11,12.這樣1的個數...