我們已經在一個特定的順序排序幾個項目...... 所有項目相關的價格P(P1,P2 ... PN)說返回可與一定量的購買獨特的項目
物品1 - P1
item2 - p2
。 。 。
itemn - PN
我們要購買的物品x量。並且最初在每次迭代後x將變爲x-p1,x-(p1 + p2)... x-(p1 + p2 + ... pn)....在任何點,如果我們發現價格pk>當前值x的任何itemK我們將從列表中刪除該項目併購買下一個項目
我們將再次運行此操作直到x = 0(數量耗盡)或列表爲空(所有項目的值> x的當前值並從列表中刪除)
函數將返回no。每件商品的購買量
現在我可以想到一個基於python字典/列表的方法來做到這一點,我們將通過上述場景循環,執行.remove(item)適用的任何地方。
但它太多迭代餓了。想知道是否有更好的數學方法來有效地找到它。
這是[子集總和問題](https://en.wikipedia.org/wiki/Subset_sum_problem),它具有「指數級」的複雜性。 – trincot