如何找到总计之和

问题描述 投票:0回答:1

有人向我公司欠了16张不同的发票,总金额为29048,88美元。他们在1999年的2个不同的转移1中给我这笔金额3,9554,96 $

如何找到第一次和第二次转帐中支付的发票?如果你有一个想法只用一个简单的数学方程式解决这个问题或使用javascript(循环可能)谢谢

math logic
1个回答
0
投票

可能重复的this question

我认为this answer解决了你的问题。

我在这里复制了解决方案的python实现。但最初的答案提供了更多的选择。算法的复杂性增长得非常快(指数),所以在使用它之前要小心,因为它比N = 16更大。

只需在列表中输入您的所有发票,然后将其中一个付款作为第二个参数输入。您将获得给定付款的所有发票组合,而其他付款只是列表中缺少的元素。可能有多个解决方案。

def subset_sum(numbers, target, partial=[]):
    s = sum(partial)

    # check if the partial sum is equals to target
    if s == target: 
        print("sum(%s)=%s" % (partial, target))
    if s >= target:
        return  # if we reach the number why bother to continue

    for i in range(len(numbers)):
        n = numbers[i]
        remaining = numbers[i+1:]
        subset_sum(remaining, target, partial + [n]) 

subset_sum([31,19,80,48,52,70,10,13,12,54,23,45,34,26,51,23,100],193)
© www.soinside.com 2019 - 2024. All rights reserved.