我们得到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