查找数字组合以求和为一个数字

Find combinations of number to sum up to a number

我有一个问题,我应该找到 5 升、10 升和 15 升桶的组合来填充水库。例如,如果水箱是 30 升,组合应该是 15 升和 15 升(这是最好的情况,当我们使用尽可能大的水桶时)。

我看过回溯,但到目前为止还没有运气。算法应该在Java.

我不会为您编写代码,但这应该会给您一个好主意。

检查最大的(15L)是否小于水库。如果是,则按该数量减少储液器并记下已选择 1 x 15L。使用越来越小的桶重复此操作,直到您一无所有(或剩余)。

这是一道经典的NP找零题。但是有一些动态规划方法可以解决有限规模的问题。更多信息:
http://www.geeksforgeeks.org/dynamic-programming-set-7-coin-change/
http://www.algorithmist.com/index.php/Coin_Change
https://en.wikipedia.org/wiki/Change-making_problem