algorithm - 计算 N 个人形成对的方式的数量
问题描述
这就是问题。
在代码世界中,所有性别都被认为是平等的(这意味着他们与男性或女性完全不同)。现在他们是生活在这个假设世界中的 N 个不同的人。每个人都可以与任何其他人配对,甚至可以保持单身。有一天,Vbhu 计划访问代码世界。作为一个数学家,他总是试图成为数学家。因此,他开始计算生活在代码世界中的 N 个人可以结对或保持单身的方式。一个人最多可以与另一个人配对。看到 N 可能很大,Vibhu 向您寻求帮助。现在,作为一名出色的程序员,您需要帮助 Vbhu 计算生活在代码世界中的 N 个人可以结对或保持单身的方式的数量。
问题链接=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)
。
推荐阅读
- c# - 为什么使用 PCap.NET 发送的数据包没有填写 TCP 选项?
- docker - Caching gradle output in dockerfile
- reactjs - React 获取数据空指针异常
- django - 在模板中,当 model.value == "str" 时如何创建 if 语句
- functional-programming - 为什么 Phoenix 中的控制器动作作为原子而不是函数传递?
- javascript - 动态更改指南的 value 和 toValue (AMCharts)
- java - What's causing my SocketException: Connection reset?
- android - 我如何使约束布局以编程方式包装我的文本视图
- javascript - 在 Javascript 中推送数据,作为 Int 而不是字符串
- docker - 本地 GitLab docker 容器中的邮件服务