我今天遇到了一个有趣的问题,并决定用 C# 编写一个算法来解决它。
有总额为负的进货发票和总额为正的发货发票。任务是从这些发票中创建组,其中发票的总和正好为 0。每个组可以包含无限的成员,所以如果有两个正成员和一个负成员但它们的总值为 0,没关系。
我们试图最小化剩余发票总数的总和,并且根本没有其他约束。
我想知道这个问题是否可以追溯到已知问题,如果没有,这将是最有效的方法。天真的方法是将传入和传出的发票分成两个不同的组,按总数排序,然后尝试一张一张地添加发票,直到达到零或符号改变。但是,这假定组中的发票应该大致相同,这是不正确的(可以将一张巨大的传入发票与 10 个较小的传出发票放在一起)
有任何想法吗?