你能帮我解决一些算法吗?
我应该找到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
我该如何解决这个问题?
答案 0 :(得分: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]