n、r、k が与えられた場合、特定の k 項目が常に一緒に表示されるように、n から r 項目を選択する方法を理解する必要があります。
Input : n = 8, r = 5, k = 2 Output : 960 Input : n = 6, r = 2, k = 2 Output : 2
この問題を解決するには、k 個のオブジェクトが集まるように n と r の配置を見つける必要があるため、ある程度の知識が必要です。
この問題については、答えを与える公式を定式化する必要があります。
#include <bits/stdc++.h> using namespace std; int fact(int n){ // function to calculate factorial of a number if(n <= 1) return 1; return n * fact(n-1); } int npr(int n, int r){ // finding permutation int pnr = fact(n) / fact(n - r); return pnr; } int countPermutations(int n, int r, int k){ // the formula that we came up with return fact(k) * (r - k + 1) * npr(n - k, r - k); } int main(){ int n = 8; int r = 5; int k = 2; cout << countPermutations(n, r, k); return 0; }
960
上記のメソッドでは、これに対する答えを計算する式を設計しようとします。質問ですが、私たちが設計した式は (k!) * (r - k 1) * P(n-k, r-k) です。 (P(x, y) は x から y を選択する順列の数です) そこで式を考えて答えを計算します。
このチュートリアルでは、一度に r 個の物と k 個の物を組み合わせる順列を見つける問題を解決します。また、この問題に対する C プログラムと、それを解決するための完全な方法 (通常) も学びました。
C、Java、Python などの他の言語で同じプログラムを作成できます。このチュートリアルがお役に立てば幸いです。
以上がC++ は k 個の要素をグループとして受け取り、n 個の要素から r 個の要素を配置します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。