当一个人最多可以与C ++中的一对结对时计算对数

我们得到N号。编码竞赛的参与者。目标是找到否。一个人最多可以与另一个人配对时可能出现的配对。因此,一对最多有2位参与者。参与者也可以单独参加。

我们可以使用对数=

  • 当n = 0或1时count = 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,则唯一的方法是保持单一。

  • 其他人可以选择保持单身,然后剩余的(p-1)将使用(p1)* makePairs(p-2)查找对。

  • count的最终值返回为no。配对的方式。

示例

#include<iostream>
using namespace std;
int makePairs(int p){
   int count=0;
   //基本条件
   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