【发布时间】:2013-11-23 02:21:45
【问题描述】:
我正在努力如何找到在使用动态编程对交易数量进行指定限制的情况下可以达到的最大美元金额
【问题讨论】:
-
我不明白问题是什么(甚至你要解决的问题)。
我正在努力如何找到在使用动态编程对交易数量进行指定限制的情况下可以达到的最大美元金额
【问题讨论】:
这不是一个优雅的解决方案,但它可以解决这个特定问题(我猜我们有同一个教授)。
逻辑是,对于每个 V[n][c],我们希望找到每个货币单位可能的最高值,为此我们必须从 6 个值中计算出最大值。
有 6 个值,因为有 3 种货币,每种货币都有两种可能的方式可以转换为目标货币。
在这种情况下,由于只有 2 次交换,我只需执行两个语句而不是另一个循环。这由数组中的 0 表示:rates[0][i][c]
我希望这会有所帮助!
for (int n = 1; n <= numberOfTransactions; n++) {
for (int c = 0; c < numberOfcurrencies; c++) {
double max = Double.NEGATIVE_INFINITY;
double temp;
for (int i = 0; i < numberOfcurrencies;i++) {
temp = rates[0][i][c]*V[n-1][i];
if (temp > max)
max = temp;
temp = rates[1][i][c]*V[n-1][i];
if (temp > max)
max = temp;
}
V[n][c] = max;
}
}
【讨论】: