内容:
假设有个单据total 绑定了 A、B、C、D、E五个单据
正数A单据下有 5个商品 P1、P2、P3、P4、P5
正数B单据下有 3个商品 P1、P6、P7
正数C单据下有 4个商品 P7、P3、P5、P2
负数D单据下有 5个商品 P1、P4、P7、P6,P3
负数E单据下有 3个商品 P1、P2、P3
A单据下的商品数量分别为 P1有5个,P2有3个,P3有4个,P4有1个,P5有5个
B单据下的商品数量分别为 P1有5个,P6有3个,P7有7个
C单据下的商品数量分别为 P7有7个,P3有3个,P5有1个,P6有3个
D单据下的商品数量分别为 P1有-6个、P4有-1个、P7有-9个、P6有-6个,P3有-1个
E单据下的商品数量分别为 P1有-5个、P2有-2个、P3有-7个
因此商品数量分别共有,P1有-1个,P2有1个,P3有-4个,P4有0个,P5有6个,P6有0个,P7有5个
现在因为P1和P3数量都是负数,需要移除D或E的其中一个或多个单据来保证所有商品的数量逼近于0,不能小于0,ABC这几个正数单据不能移除,需要用到哪些算法,该如何实现,因为数量比较大不能把所有单据全部加载到内存中,目前单据和商品信息都是存在数据库中的,来大佬帮我实现全加在到内存和不全加在到内存的两个方案,或者帮忙提供下思路