![]() |
1
2
两个简单的优化:
pypy 它非常擅长优化像这样的函数。 |
![]() |
2
1
为了加快程序的速度,需要两种见解(我想你已经有了,只是为了完整性)
但是,这只能用于
这可以通过递归+记忆来实现,或者像我的版本那样,通过使用自底向上的动态规划来实现。它还使用整数的二进制表示来表示集合和(最重要的部分!)几乎立即返回结果
对代码中使用的“技巧”的一些解释:
在下一步中,我们处理
我们可以到达
|
![]() |
3
0
编辑: 我误解了原始问题,这里提出的解决方案针对以下问题: 我保持原样,因为在这么多年的概率论之后,我很高兴能解决这个问题,我就是不能删除它:)
提高性能有两种可能:加快代码速度(在开始之前,应该对代码进行分析,以便知道应该优化程序的哪一部分,否则时间会花在优化不重要的事情上)或改进算法。我提议做第二件事。 好的,这个问题似乎比第一个站点更复杂。让我们从一些观察开始。
如果
我们打电话
因此
从urn问题中,我们知道
现在是代码:
结果我
显然,如果你想处理更一般的情况(更多的组,不同组中的数字卡),你必须扩展代码(递归,记忆)
但最关键的部分是:使用这种方法,你(几乎)不在乎选卡的顺序,因此你必须检查的状态数减少了一倍
|
![]() |
Wizard · 创建特定排列Python 6 年前 |
![]() |
RyanP · JAVA的置换生成器方法分析 6 年前 |
![]() |
stavrop · 如何从项目列表中获得顺序排列? 6 年前 |
![]() |
Askold Ilvento · 在Eigen中应用逆换位 6 年前 |
![]() |
Gabriel · 计算2个向量之间的断点距离 6 年前 |
![]() |
Kuba KrzyżyÅski · 打印置换树python3 6 年前 |