计算 N 个人结对的方式数
count the number of ways in which N persons form pair
这就是问题。
在代码世界中,所有性别都被认为是平等的(这意味着他们与男性或女性完全不同)。现在他们有 N 个不同的人生活在这个假设的世界中。每个人都可以与任何其他人配对,甚至可以保持单身。
有一天,Vbhu 计划访问代码世界。作为一个数学家,他总是努力成为数学家。于是他开始数着生活在代码世界里的N个人有哪些结对或者单身的方式。一个人最多可以与另一个人配对。
看到 N 可以很大,Vibhu 向你求助。现在,作为一名优秀的程序员,您需要帮助 Vbhu 计算生活在代码世界中的 N 个人可以结对或保持单身的方式的数量。
问题link = https://www.hackerearth.com/practice/algorithms/dynamic-programming/introduction-to-dynamic-programming-1/practice-problems/algorithm/vibhu-and-his-mathematics/description/
编辑解决方案:
设 F(X) 表示上述问题的方法数,这意味着我们有 X 个人。所以,让我们来看看第 X 个人,他可能想保持单身,或者他可以与 [1,X-1] 中的某个人配对。
因此,考虑到这两种情况并将其添加到最终答案中,我们得到了重复:-
F(X) = F(X-1) + (X-1)*F(X-2)。让我们看看实现递归方法的伪代码。
我理解他保持单身的情况(f(x-1)) 但对于另一种情况,选择其他伴侣的总可能方式是 x-1 但为什么要乘以 f(x-2)
另一种情况是这个人想配对:在这种情况下选择一个人配对后,剩下的人是X-2
,答案是F(X-2)
。
有 X-1
种选择合作伙伴的方法。对于选择合作伙伴的每个选项,有 F(X-2)
种方式,对于 (X-1)
种选择 - 总方式为 (X-1)*F(X-2)
.
这就是问题。
在代码世界中,所有性别都被认为是平等的(这意味着他们与男性或女性完全不同)。现在他们有 N 个不同的人生活在这个假设的世界中。每个人都可以与任何其他人配对,甚至可以保持单身。 有一天,Vbhu 计划访问代码世界。作为一个数学家,他总是努力成为数学家。于是他开始数着生活在代码世界里的N个人有哪些结对或者单身的方式。一个人最多可以与另一个人配对。 看到 N 可以很大,Vibhu 向你求助。现在,作为一名优秀的程序员,您需要帮助 Vbhu 计算生活在代码世界中的 N 个人可以结对或保持单身的方式的数量。
问题link = https://www.hackerearth.com/practice/algorithms/dynamic-programming/introduction-to-dynamic-programming-1/practice-problems/algorithm/vibhu-and-his-mathematics/description/
编辑解决方案:
设 F(X) 表示上述问题的方法数,这意味着我们有 X 个人。所以,让我们来看看第 X 个人,他可能想保持单身,或者他可以与 [1,X-1] 中的某个人配对。
因此,考虑到这两种情况并将其添加到最终答案中,我们得到了重复:- F(X) = F(X-1) + (X-1)*F(X-2)。让我们看看实现递归方法的伪代码。
我理解他保持单身的情况(f(x-1)) 但对于另一种情况,选择其他伴侣的总可能方式是 x-1 但为什么要乘以 f(x-2)
另一种情况是这个人想配对:在这种情况下选择一个人配对后,剩下的人是X-2
,答案是F(X-2)
。
有 X-1
种选择合作伙伴的方法。对于选择合作伙伴的每个选项,有 F(X-2)
种方式,对于 (X-1)
种选择 - 总方式为 (X-1)*F(X-2)
.