Computer >> Máy Tính >  >> Lập trình >> C ++

C ++ Hoán vị của n sự vật Thực hiện r tại một thời điểm với k Sự vật cùng nhau

Với n, r, k, bây giờ chúng ta phải tìm cách có thể chọn r thứ từ n để k thứ cụ thể luôn xảy ra cùng nhau, chẳng hạn.

Input : n = 8, r = 5, k = 2

Output : 960


Input : n = 6, r = 2, k = 2

Output : 2

Chúng ta cần một chút kiến ​​thức cho bài toán này vì bài toán này yêu cầu chúng ta tìm hoán vị của n và r sao cho k vật đồng nhất với nhau.

Phương pháp tiếp cận để tìm giải pháp

Chúng tôi cần xây dựng công thức của chúng tôi cho câu hỏi này và điều đó sẽ cho chúng tôi câu trả lời của chúng tôi.

Ví dụ

#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;
}

Đầu ra

960

Giải thích về Quy tắc trên

Trong cách tiếp cận trên, chúng tôi cố gắng đưa ra công thức tính toán câu trả lời của chúng tôi như đối với bài toán này, công thức mà chúng tôi đã nghĩ ra là (k!) * (R - k + 1) * P (n-k, r-k). (P (x, y) là số hoán vị của lựa chọn y từ x) do đó chúng tôi đưa ra công thức của mình và chúng tôi tính toán câu trả lời.

Kết luận

Trong hướng dẫn này, chúng ta giải một bài toán để tìm Hoán vị của n thứ lấy r tại một thời điểm với k thứ cùng nhau. Chúng tôi cũng đã học chương trình C ++ cho vấn đề này và cách tiếp cận hoàn chỉnh (Bình thường) mà chúng tôi đã giải quyết vấn đề này.

Chúng ta có thể viết cùng một chương trình bằng các ngôn ngữ khác như C, java, python và các ngôn ngữ khác. Chúng tôi hy vọng bạn thấy hướng dẫn này hữu ích.