我正在尝试解决一个递归问题。但是,未能提出可行的解决方案。在处理递归问题时,我通常先创建一个迭代问题,然后再转换它,但在这种情况下,我无法这样做...
输入是n个元素的列表,按单价从最低到最贵,以及一个预算值;所有正整数。
method(int unitPriceList[], int budget )
Unit Price List = [ 3 , 7 , 9 ]. Budget = 18
输出将所有可能的饱和行程打印为项目数量列表,每行一个列表,每个列表后跟同一行的总价。 saturated这个词的意思是在budget之内,但是如果我们再往里面加一个item,它就会不在budget之内。
Quantities = [ 0 , 0 , 2 ]. Total Price = 18.
Quantities = [ 1 , 2 , 0 ]. Total Price = 17.
Quantities = [ 0 , 1 , 1 ]. Total Price = 16.
...
The number of saturated itineraries = …
如果您能指出正确的方向来解决这个问题,我将不胜感激。
最佳答案
这就是“硬币的所有组合”问题的一个例子。找到解决方案。要转换为您的情况,请添加一个单位硬币(价格 == 1)。现在,拒绝任何具有与最低价格一样多的单位硬币的解决方案(在本例中为 3 个)。
重申一下,您正在寻找使用面额为 (1, 3, 7, 9) 的硬币赚取 18 美分的方法数,但您不能使用超过两个 1 美分的硬币。这将需要用这些硬币交易更高的面额。
这会让你动起来吗?
关于java - 预算行程的递归算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46699359/