[英]algorithm to combinatorics
我正在尝试解决组合问题,这似乎很简单,但是我遇到了一些麻烦。
如果我最多有X张桌子,并且N人坐在桌子上,则每个桌子可以有1到N个座位,并且我只能将人坐在矩形桌子的一侧(因此,人们的坐姿很重要)。
我想编写一个可以计算从1到K表的所有座位位置分布的代码。
例如,如果我有12个人和1个桌子,我有479001600的座位方式(这很容易计算,我使用的阶乘为12)。
但是,如果我有12个人和3张桌子,我有4390848000的座位方式。 我尝试了不同的解决方案,但找不到正确的解决方案。
我试图将12除以3,然后o使用因数的结果(它没有用),我试图使用12! * 3(它也不起作用)。
有人可以给我提示我可以使用的算法吗?
阅读有关Lah Numbers的文章,它应该会有所帮助。
我认为4,390,848,000(如果算上空座位)不是正确的答案。
将N个人安排到X个N座位表中的方法的数量等于将N个人安排到1个(N * X)座位表中。 结果非常明显:(NX选择N×N!)。
例如
[a b|_ _] [a _|b _] [a _|_ b]
[_ a|b _] [_ a|_ b] [b a|_ _]
[_ _|a b] [b _|a _] [_ b|a _] = 4 choose 2 * 2! = 12.
[b _|_ a] [_ b|_ a] [_ _|b a]
但是(36选择12×12!)= 599,555,620,984,320,000。
即使表是相同的(删除3!= 6),结果99,925,936,830,720,000仍然比4,390,848,000大得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.