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

WBOY
リリース: 2023-09-07 20:37:02
転載
1028 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!