N 번호가 제공됩니다. 코딩 대회 참가자 수. 목표는 아니오를 찾는 것입니다. 한 사람이 최대 한 명의 다른 사람과 짝을 이룰 수 있을 때 가능한 짝의 수. 따라서 한 쌍에는 최대 2명의 참가자가 있습니다. 참가자 혼자도 참가 가능합니다.
쌍=
인 경우 반복을 사용하여 이 문제를 해결할 수 있습니다.-
count=1일 때 n=0 또는 1(한 사람만 남음)
-
사람이 독신으로 남아 있으면 n이 n-1로 감소
-
이제 남은 페어링 인원에 대해 =n-2
count=makePairs(p-1) + (p-1)*makePairs(p-2);
-
예를 들어 이해합시다.
입력 − 명=3
출력 − 쌍을 만드는 방법의 수 − 4
설명 -
If three persons are a,b,c then ways of pairing could be: (a,b), (c) → c remained single (a,c), (b) → b remained single (b,c), (a) → a remained single (a),(b),(c) → all remained single Total ways = 4
입력 − 명=2
출력 − 쌍을 만드는 방법의 수 − 2
설명 -
I persons are a,b then ways of pairing could be − (a,b) → both paired (a),(b) → both remained single Total ways = 2
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
참가자 수를 저장하기 위해 정수를 사용합니다.
-
함수 makePairs(int p)는 아니오를 취합니다. 사람의 수를 입력으로 하고 그들이 스스로 짝을 이룰 수 있는 방법의 수를 반환합니다.
-
초기 카운트를 0으로 합니다.
-
p=0 또는 1이면 단일 상태를 유지하는 유일한 방법은 1입니다.
-
다른 사람은 독신으로 남도록 선택할 수 있으며 나머지(p-1)는 (p1)*makePairs(p-2)를 사용하여 쌍을 찾습니다.
-
count의 최종 값은 no로 반환됩니다. 마지막에 페어링 방법에 대해 설명합니다.
예시
#include<iostream> using namespace std; int makePairs(int p){ int count=0; // Base condition if (p==0 || p==1) { count=1; } else { count=makePairs(p-1) + (p-1)*makePairs(p-2); } return count; } int main(){ int persons = 5; cout <<"Number of ways to make pair ( or remain single ):"<<makePairs(persons); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Number of ways to make pair ( or remain single ): 26