3
|
chillitom Cee McSharpface · 技术社区 · 14 年前 |
1
2
首先建立一个所有货币的图表:
现在使用递归遍历该图:
免责声明: 这是未经测试的。此外,我确信这不是解决问题的最有效方法(我认为是),但我相信它会起作用的。为了提高性能,您可以添加一些内容(例如,保存每一个新的合并比率计算,最终将其转换为有效的o(1)) |
2
2
把所有的货币换算成一种货币,然后用它来换算,难道不简单吗?例如(以美元为基础货币):
现在,这假设代数是完全交流的。也就是说,如果我转换为欧元->美元->英镑,我将获得与从欧元->英镑转换相同的收益。实际上可能不是这样,在这种情况下,您需要每个支持的排列。 |
3
1
有趣的问题! 首先, 远离双/浮点运算 . .NET Decimal type 应该是相当充分和提供更好的精度!考虑到衍生外汇汇率的计算需要一系列的多重操作,这种改进的精度可能特别重要。 另一种说法是,引入一个更简单/更短的汇率表可能是不受限制的,即目标货币总是相同的[真实或虚构的]货币。我在这里假设我们应该使用列出的价格。 所以 计算导出的速率应该成为一个[简化的]网络解决方案 由此
|
4
1
我不知道“双汇”是用来干什么的…我就不管了。
尝试:
评论?
附言:你可以用
|
5
0
最直接的算法可能是 Dijkstra 的最短路径或使用该列表生成的图形上的某些内容。因为您事先不知道路径的长度,所以这并不是一个可以通过linq查询优雅地解决的问题。(并不是说这是不可能的,这可能不是你应该追求的。) 另一方面,如果您知道有一条从任何货币到任何其他货币的路径,并且列表中的任何两种货币之间只有一种可能的转换(即,如果存在美元>欧元和美元>瑞士法郎,则欧元>瑞士法郎不存在或您可以忽略它),则只需生成一些就像一个双链表和遍历。不过,这并不是通过linq可以很好地解决的问题。 |
6
0
生成它们并缓存它们。给定初始集,该函数将生成所有现有的对(在同一个列表中),而无需图形或递归,方法是在迭代时简单地展开初始列表。
此实用函数将生成单个交叉率。
|
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |