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개를 가지고 n개의 순열을 찾는 문제를 풉니다. 우리는 또한 이 문제에 대한 C++ 프로그램과 이 문제를 해결하기 위한 완전한 접근 방식( Normal)을 배웠습니다.
C, Java, python 및 기타 언어와 같은 다른 언어로 동일한 프로그램을 작성할 수 있습니다. 이 튜토리얼이 도움이 되기를 바랍니다.