2017-10-12 62 views
1

我试图解决一个递归问题。但是,没有提出一个工作解决方案。在处理递归问题时,我通常先做一个迭代转换,然后转换它,但在这种情况下,我无法做到这一点...预算行程的递归算法

输入是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

你对我的回答的评论说你仍然卡住了。请阅读并遵守帮助文档中的发布准则。 [最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)适用于此处。在发布您的MCVE代码并准确描述问题之前,我们无法为您提供有效的帮助。 我们应该能够将发布的代码粘贴到文本文件中,并重现您描述的问题。 “找不到方法”不是Stack Overflow的问题规范。 – Prune

回答

2

这将是“硬币的所有组合”问题的情况。找到一个解决方案。要转换为您的案例,请添加单位币(价格== 1)。现在,拒绝任何具有与最便宜的价格一样多的单位硬币的解决方案(本例中为3)。

重申一遍,您正在寻找一种计算方法,您可以赚取18美分硬币面值(1,3,7,9) - 但您不能使用两个以上的1美分硬币。这就需要交易这些硬币以获得更高的面值。

这让你感动吗?

+0

我能够确定饱和行程的数量。但是,无法找到像上面指定的那样将其输出给用户的方式。 – Lopic