Algorithm 将传入和传出发票分组,使其总和为0
今天我遇到了一个有趣的问题,决定用C#编写一个算法来解决它 总金额为负数的传入发票和总金额为正数的传出发票。任务是将这些发票分组,其中发票总数加起来正好为0。每个组可以包含无限个成员,所以如果有两个正成员和一个负成员,但它们的总值为0,则可以 我们试图最小化剩余发票总额,并且没有任何其他约束 我想知道这个问题是否可以追溯到一个已知的问题,如果不能,哪种方法是最有效的。天真的方法是将传入和传出的发票分为两个不同的组,按总数排序,然后尝试逐个添加发票,直到达到零或符号已更改。然而,这假设一组中的发票数量应该大致相同,这是不正确的(一张巨大的进货发票可以与10张较小的出库发票相对)Algorithm 将传入和传出发票分组,使其总和为0,algorithm,sorting,Algorithm,Sorting,今天我遇到了一个有趣的问题,决定用C#编写一个算法来解决它 总金额为负数的传入发票和总金额为正数的传出发票。任务是将这些发票分组,其中发票总数加起来正好为0。每个组可以包含无限个成员,所以如果有两个正成员和一个负成员,但它们的总值为0,则可以 我们试图最小化剩余发票总额,并且没有任何其他约束 我想知道这个问题是否可以追溯到一个已知的问题,如果不能,哪种方法是最有效的。天真的方法是将传入和传出的发票分为两个不同的组,按总数排序,然后尝试逐个添加发票,直到达到零或符号已更改。然而,这假设一组中的发票
有什么想法吗?你面临的问题是一个众所周知且经过研究的问题,叫做 不幸的是,问题是e,因此没有已知的多项式解。
事实上,甚至没有已知的多项式解来确定这样的子集(即使是单个子集)是否存在,更不用说找到它了 但是,如果您的输入由相对较小的(绝对值)整数组成,则可以使用一个非常有效的(伪多项式)来解决该问题 如果情况并非如此,则其他备选方案包括:
(1) 大多数计算机科学研究人员认为一个问题是不存在的,这基本上就是问题所在。你所面临的问题是一个众所周知的、经过研究的问题,叫做 不幸的是,问题是e,因此没有已知的多项式解。
事实上,甚至没有已知的多项式解来确定这样的子集(即使是单个子集)是否存在,更不用说找到它了 但是,如果您的输入由相对较小的(绝对值)整数组成,则可以使用一个非常有效的(伪多项式)来解决该问题 如果情况并非如此,则其他备选方案包括:
(1) 大多数计算机科学研究人员都认为不存在这样的系统,这基本上就是问题所在。谢谢,我很害怕。我要研究一下你推荐的文章!谢谢,我很害怕。我要研究一下你推荐的文章!