我试图解决递归问题。但是,未能提出有效的解决方案。在处理递归问题时,我通常首先进行迭代,然后转换它,但在这种情况下,我无法这样做......
输入是由最低价格到最高价格的单位价格给出的n项目清单,以及预算值;所有正整数。
method(int unitPriceList[], int budget )
Unit Price List = [ 3 , 7 , 9 ]. Budget = 18
输出将所有可能的饱和行程打印为项目数量列表,每行一个列表,每个列表后跟其在同一行上的总价格。饱和度一词意味着它在预算范围内,但如果我们再添加任何项目,它将无法在预算范围内。
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 = …
如果你能指出我正确的方向来解决这个问题,我将非常感激。
答案 0 :(得分:2)
这将是“所有硬币组合”问题的案例。找到解决方案。要转换为您的案例,请添加单位币(价格== 1)。现在,拒绝任何具有与您最便宜的价格一样多的单位硬币的解决方案(在这种情况下为3)。
重申,你正在寻找用硬币面额(1,3,7,9)制作18美分的方法 - 但你不能使用两个以上的1美分硬币。这需要交易这些硬币以获得更高的面额。
这会让你感动吗?