ホームページ  >  記事  >  バックエンド開発  >  C++ は k 個の要素をグループとして受け取り、n 個の要素から r 個の要素を配置します。

C++ は k 個の要素をグループとして受け取り、n 個の要素から r 個の要素を配置します。

WBOY
WBOY転載
2023-09-07 20:37:021006ブラウズ

C++ は k 個の要素をグループとして受け取り、n 個の要素から r 個の要素を配置します。

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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。