java - 预算行程的递归算法

标签 java algorithm recursion

我正在尝试解决一个递归问题。但是,未能提出可行的解决方案。在处理递归问题时,我通常先创建一个迭代问题,然后再转换它,但在这种情况下,我无法这样做...

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

相关文章:

java - 我如何知道我的服务何时从广播接收器与 Android 调用?

java - 任意精度乘法,Knuth 4.3.1 前导零消除

java - 计算平方根和立方根的递归算法

c++ - 在C++中的递归函数中返回

java - 如何使用 extends Fragment 制作计算器

java - Hibernate-Search - 使用 lucene 查询解析器语法进行不区分大小写的通配符搜索(不使用 QueryBuilder!)

java - 从下往上扫描树结构?

c# - 你能用 C# 优雅地编写置换函数吗?

c++ - 递归返回最小索引

java - 等待 CompletableFuture 完成,然后返回不同的值?