>  기사  >  백엔드 개발  >  C++에서는 k개의 요소를 그룹으로 취하고 n개의 요소에서 r개의 요소를 배열합니다.

C++에서는 k개의 요소를 그룹으로 취하고 n개의 요소에서 r개의 요소를 배열합니다.

WBOY
WBOY앞으로
2023-09-07 20:37:021036검색

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의 배열을 찾아야 하기 때문입니다.

Solution

우리는 답을 줄 수 있는 이 문제에 대한 공식을 공식화해야 합니다.

Example

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

Output

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제