輸出從n個數中選m個數的所有組合

2021-06-18 17:12:15 字數 686 閱讀 4865

題目:n個數1,2,...,n,從這n個數中任意選m個數,輸出所有不同組合,共有c(n,m)種不同組合。如n=5,m=3,會產生如下輸出:

5 4 3 

5 4 2 

5 4 1 

5 3 2 

5 3 1 

5 2 1 

4 3 2 

4 3 1 

4 2 1 

3 2 1 

解題思路1:採用遞迴的方法,終止條件是當m==0時,此時輸出所有這個組合。否則遍歷n,n-1,...,m作為第乙個數,然後從這個數的後面遞迴找出m-1個數的所有組合。

**如下:

#includeusing namespace std;

void get_combinations(int n,int m,int* result,int len)

}int main()

解題思路2:採用遞迴的方法。首先遞迴訪問含n的組合,然後遞迴訪問不含n的組合。

**如下:

#includeusing namespace std;

void get_combinations(int n,int m,int* result,int len)

{ if(m==0||n擴充套件:當從任意n個數中,找m個數的所有組合時,可以把n和m當作索引看待。

從m個數中選擇n個數的實現

從m個數中選出n個數來 0 n m 要求n個數之間不能有重複,其和等於乙個定值k。求一段程式,羅列所有的可能。例如備選的數字是 11,18,12,1,2,20,8,10,7,6 和k等於 18 那麼組合的可能有 18 8,10 2,20 12,6 11,7 11,1,6 1,10,7 12,2,8 ...

遞迴實現 從n個數中選取m個數的所有組合

有n n 0 個數,從中選取m n m 0 個數,找出所有的組合情況 不分順序 這樣的組合共有 cm n n n 1 n m 1 m 乙個陣列 data 有 n 個元素,從中選取 m 個數的組合 arr,使用遞迴演算法實現是這樣乙個過程 1 選擇 data的第1個元素為arr的第乙個元素,即 arr...

從n個數中選擇k個數

這是組合問題,組合問題有幾種寫法,且時間複雜度位o n 2 1 暴力迴圈,適用於固定的k 比方從7個數中找兩個數 int main sort nums.begin nums.end int count 0 for int i 0 i nums.size i cout count 2 當前數選不選,遞...