如何在 C++ 中計算組合數和排列數?
組合數和排列數是組合學的一部分。排列數是指一個元素集合在每次取出一個元素時可以做出的不同排列方式,每次取出幾個元素時可以做出的不同排列方式,或者每次取出全部元素時可以做出的不同排列方式。組合數是指一個元素集合在每次取出一個元素時可以做出的不同選擇方式,每次取出幾個元素時可以做出的不同選擇方式,或者每次取出全部元素時可以做出的不同選擇方式。
當有 n 個元素且需要排列 r 個元素時的排列數。
當有 n 個元素且需要選擇 r 個元素時的組合數。
一個用 C++ 計算組合數和排列數的程式如下所示。
示例
#include <iostream> using namespace std; int fact(int n) { if (n == 0 || n == 1) return 1; else return n * fact(n - 1); } int main() { int n, r, comb, per; cout<<"Enter n : "; cin>>n; cout<<"\nEnter r : "; cin>>r; comb = fact(n) / (fact(r) * fact(n-r)); cout << "\nCombination : " << comb; per = fact(n) / fact(n-r); cout << "\nPermutation : " << per; return 0; }
輸出
上述程式的輸出如下。
Enter n : 5 Enter r : 3 Combination : 10 Permutation : 60
廣告