我是动态编程的新手。所以,我想要找到最大的利润。我不认为我在做什么是正确的。我不明白k转换是为了什么。在给定的示例中,给出了3种货币,因此有3种转换。有人可以给我更多关于如何解决这个问题的想法吗?
答案 0 :(得分:-1)
首先,让我们考虑一下有多少货币交易。如果您有三种货币(让我们称之为英镑,法郎和商标)您有六种可能的类型货币交易:磅到标记,标记到磅,英镑到法郎,法郎到英镑,法郎到标记,以及对法郎的标记。
但就你的问题而言,当他们说你有k货币交易时,他们的意思是你可以从一些货币开始并进行一系列k货币交易。你的工作是弄清楚哪些k交易会带来最大的利润。因此,举例来说,如果你有三种货币,但k = 1并且你被告知从磅开始,那么你的任务很简单:决定英镑兑换法郎是否更好,或者磅数是否更好。如果k = 2,你有更多的选择,等等。
将此视为加权有向图可能会有所帮助,其中货币是节点,并且弧由加权率加权。然后,您可以从通过图表找到最有利可图的路径来考虑问题,长度为k,从节点i开始。
以这种方式思考也会向你展示你的表达式中的问题,它应该看起来像图表中的路径,而不是你拥有的。您可能还会考虑使用对数的某些属性,将此问题从乘法问题转变为有关加法的问题。
最后,图结构上的动态编程通常涉及从长度为n的解决方案中构建长度为n + 1的解决方案,因此您应该首先考虑可能的最小问题,以及它与第二小问题的关系。问题等。