gpt4 book ai didi

python - 在给定数字列表的情况下获取计算 X 的所有组合

转载 作者:行者123 更新时间:2023-12-04 07:47:26 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

4 个月前关闭。




Improve this question




非常简单的想法,但在代码中更难(对我而言)。
我想知道有多少组合来计算一个数字 X 给定我可以计算出来的数字。
这是一个例子:

>>> calculate(5, (1,2,5))
4
>>> calculate(42, (1,2,5,10,20))
271
第一个例子给出 4 因为:
  • 5
  • 2 + 2 + 1
  • 2 + 1 + 1 + 1
  • 1 + 1 + 1 + 1 + 1

    我很确定这可以使用动态编程或递归内存快速完成,但想不出一种开始整个事情的方法。

    编辑
    我想这样做:Find all combinations of a list of numbers with a given sum
    但是由于某些未知的原因,大多数代码不起作用,其他代码甚至无法执行我给出的 5 或 42 之类的简单示例。
  • 最佳答案

    您可以使用在输入列表中查找所需总和的所有除数的函数:

    def calculate(v, d, c = []):
    if not v:
    yield tuple(sorted(c))
    elif v > 0:
    vals = [i for i in d if not v%i] #find divisors
    for i in vals:
    for j in range(1, int(v/i)+1):
    #run offset by subtracting the current divisor iteration by the running total "v"
    yield from calculate(v - (i*j), [x for x in d if x != i], c + ([i]*j))
    if not vals: #no divisors found
    for i in d:
    yield from calculate(v - i, d, c+[i])

    print(len(set(calculate(5, (1,2,5)))))
    print(len(set(calculate(42, (1,2,5,10,20)))))
    print(len(set(calculate(15, (9, 6))))) #example with no divisors
    输出:
    4
    271
    1

    关于python - 在给定数字列表的情况下获取计算 X 的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67144190/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com