我有一个问题,我应该找到5l,10l和15l水桶的组合来填充水库。例如,如果水库是30升,那么组合应该是15升和15升(这是最好的情况,当我们使用尽可能多的大桶时)。
到目前为止我看了回溯但没有运气。算法应该是Java。
答案 0 :(得分:3)
这是一个典型的硬币变化问题,即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
答案 1 :(得分:0)
我不会为你编写代码,但这应该会给你一个好主意。
检查最大(15L)是否小于储液器。如果是,请将储存量减少一定量,并记下已选择1 x 15L。使用越来越小的桶重复此操作,直到您没有任何东西(或剩余部分)。