從n個人中選擇k個人的選法

2021-07-02 01:15:17 字數 400 閱讀 9716

從n個人中選選k個人組成乙個委員會的不同組合數。

從n-1個人到n個人,增加乙個人,這個人可能被選中,也可能不被選中。若第n個人被選中則是從n-1個人中選擇k-1個人,若第n個人沒被選中,則是從n-1個人中選擇k個人。即得以下公式:

由n個人裡選k個人的組合數= 由n-1個人裡選k個人的組合數+由n-1個人裡選k-1個人的組合數;

遞迴法得出推導公式:

f(n,0) = 1;

f(n,k=n)=1;

f(n,k) = f(n-1,k)+f(n-1,k-1)

c++語言**實現

int getkfromn(int n ,int k)else

if(n==k || k==0)else

}

從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 當前數選不選,遞...

用敗者樹從N個數中選擇最大的k個數字

20 21 24 29 36 45 56 69 84 101 120 141 164 189 16 45 76 109 144 181 20 61 104 149 196 45 96 149 4 61 120 181 44 109 176 45 116 189 64 141 20 101 184 6...

從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 ...