【问题标题】:All possible combinations for N numbersN 个数字的所有可能组合
【发布时间】:2014-01-24 23:09:38
【问题描述】:

你能帮我一些算法吗?

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

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

1/4: A + B + C + D

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

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

4/4: A*B*C*D

我该如何解决这个问题?

【问题讨论】:

标签: algorithm numbers combinations


【解决方案1】:

如您所见,这些是多项式 (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]

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多