Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

사람이 C++에서 최대 하나와 쌍을 형성할 수 있을 때 쌍을 계산합니다.


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