algorithm - N 个数字的所有可能组合

标签 algorithm numbers combinations

你能帮我做一些算法吗?

我应该找到 N 个数字的所有可能组合:1/N、2/N、3/N、...、N-2/n、N-1/N、N/N

例如取 4 个数字:A、B、C、D

1/4A + B + C + D

2/4A*B + A*C + A*D + B*C + B*D + C*D

3/4A*B*C + A*B*D + A*C*D + B*C*D

4/4:A*B*C*D

我该如何解决这个问题?

最佳答案

如您所见,这些是多项式 (X + A)(X + B)(X + C)(X + D) 展开后的系数。

实现多项式乘以单项式并迭代使用就足够了。

def PolyByMono(Poly, Mono):
    Poly.append(0)
    for i in range(len(Poly) - 2, -1, -1):
        Poly[i + 1]+= Mono * Poly[i]
    Poly[0]+= Mono
    return Poly

def Expand(Numbers):
    Poly= [Numbers[0]]
    for M in Numbers[1:]:
        Poly= PolyByMono(Poly, M)

    print Poly  

Expand([1, 2, 3, 4])

给出:

[10, 35, 50, 24]

关于algorithm - N 个数字的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327779/

相关文章:

algorithm - 阐明递归排序算法

algorithm - Cormen插入排序算法分析

mysql - 如何将数字的每个数字分成不同的行

python - 有什么比 itertools 更快的替代品?

python - 如何在Python(使用Itertools)中生成所有不同的组合(其中输入元素重复)?

algorithm - 从图形中获取主线

Objective-C:从数字映射到 NSDictionary 中相应的 NSRange 的最有效方法

python - 比较两个包含数字的 python 字符串

c# - 正则表达式搜索包含 3 个或更多数字的字符串

php - 获取符合特定范围条件的可能组合(大小为 N)