我正在努力寻找如何使用动态编程对事务数量的指定限制来找到最大数量的美元
答案 0 :(得分:1)
这不是一个优雅的解决方案,但它适用于这个特定的问题(我猜我们有同一个教授)。
逻辑是,对于每个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;
}
}