微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在任何给定的问题中,是否有任何定义的方法来选择用于记忆的变量?

如何解决在任何给定的问题中,是否有任何定义的方法来选择用于记忆的变量?

例如,如果我们有以下问题:

给定一组硬币 - [1,2,5] 和数量 - 11。找出制作 11 所需的最少硬币数量

我们可以使用递归来探索状态空间。例如,根为空,我们从硬币数组的索引 0 开始。从根上,我们可以选择取硬币1(硬币数组的索引0)或不取硬币1,继续递归探索状态空间。

但是我们如何选择用于记忆的变量呢?是否有任何定义的通用方式来选择它?

在这个问题中,我直觉地选择了以下变量用于记忆:

元组键:(硬币的总和,我们正在探索的硬币数组的索引) 价值:硬币数量

但它不起作用。

解决方法

困难的部分是找到递归。所以你首先需要使用递归找到一个解决方案,剩下的就很简单了。

通常,我们可以尝试将答案表达为函数。例如,让 f(x) 等于制作 x 所需的最小硬币数量。所以答案是f(11)

接下来,我们尝试找到一些递归和基本情况。在这种情况下,f(x) = min(f(x-1),f(x-2),f(x-5)) + 1f(0) = 0f(x) = inf 如果 x < 0

您可以在记忆之前实现此功能,并使用少量输入进行测试以查看其是否有效。

递归部分完成后,备忘录参数是影响结果的函数参数。在这种情况下,只有一个参数,它是您应该在备忘录中使用的参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。