【发布时间】:2016-11-17 20:07:52
【问题描述】:
我有 ID 为 (1001, 1002, 1003, 1004, 1005, 1006) 的项目。那里respective quantities are (2, 5, 1, 1, 5, 2):现在我有如下数据。每行都有一个offerId。
offerId :{[Item_Id, Item_quantity_on_which_offer_Applied, Discount per quantity]}
1 :{[1001, 2, 21]}
4 :{[1002, 5, 5]}
6 :{[1003, 1, 25] [1004, 1, 25]}
5 :{[1004, 1, 20]}
3 :{[1005, 5, 17.5] [1002, 5, 17.5]}
2 :{[1005, 2, 18.33] [1001, 2, 26] [1006, 2, 21.67]}
说明 当应用商品 ID 1 时,我在 21 rs 时获得商品 ID 1002 的商品 2 数量。每个数量的折扣,即我得到21 rs。 1 数量1002 的折扣。
目标我想得到最好的报价组合。例如,在上述情况下,最佳报价组合将是:
OfferId : 2(折扣 = 132(即 (18.33+26+21.67)*2))
OfferId:3(注意:对于 3 件商品 1005 和 3 件商品 1002,因为 2 数量的商品 1005 已经在商品 ID 2 中)。 (折扣 = 105(即 (17.5+17.5)*3))
现在项目1002 有2 剩余数量,所以:
offerId : 4(应用于 2 商品数量 1002)(折扣 = 10(即 5*2))
offerId : 6 (折扣 = (25+25)*1 = 50)
因此,简而言之,offerids 2、3、4、6 将为我提供最好的优惠组合,其中优惠 4 应用于 2 项目数量 1002,
为 3 件商品 1005 和 3 件商品 1002 提供 3。
以上是我希望根据数量计算最佳报价组合的结果。
到目前为止,我已经能够在不考虑数量的情况下找到最佳报价组合。但现在我的要求是考虑商品的数量,然后找到最佳的报价组合。
如果有人能给我提供一个伪代码,那将非常有帮助。非常感谢任何建议。
附:我正在用 Golang 编写代码,但欢迎使用任何语言的解决方案。
我希望我的问题是正确的。如果需要有关问题的更多信息,请在下方评论。 提前致谢。
【问题讨论】:
-
请记住,算法的结果集不会提供任何信息,因为在黑色星期五之前,商店可能会提高价格。如果您将实际价格与互联网上的最低价格进行比较,或者如果价格最低,则将其与次低价格进行比较,这可能是有意义的。
-
我不太明白这个问题。是否作为输入的一部分给出了所需的项目数量?文究竟是两个offer不相容;当且仅当它们在项目类型上有一些重叠?
-
我有一组物品和它们各自的数量。考虑我的输入是我上面显示的数据。现在我必须编写一个算法,在该算法中我可以传递该数据并得到我所描述的结果。
-
另外,如果某个商品的 2 个数量应用了某个商品,则该商品的该 2 个商品不能应用其他商品。假设我有4个item_id
1001,那么可以申请2个offerId1,另外2个offerId2可以申请。
标签: algorithm