日期:2014-05-18  浏览次数:20879 次

【考一考】汇率算法,号称算法强的可以来挑战一下^_^
汇率信息中有不同币种之间的汇率,要求从已知信息中求出给定币种直接的汇率。
将汇率信息存放在sql server数据库中,结构如下:
SourceCurrency TargetCurrency Rate
A B 1.0000
G H 2.4454
H C 8.0000
M N 4.0000
J H 10.0000
……//任意多的汇率信息
B M 7.2222
X Y 8.9999

求货币A对货币N的汇率(任意两种币种之间的汇率默认为1.0000),用sql作答,用c#亦可。


------解决方案--------------------
1. 首先,这数据设计的啊……欸…… 
2. A B有 找B相关, B x有 找X相关,如果是X B,就用汇率倒数……直到找到 X N相关。

------解决方案--------------------
A B
A C
A D
A E
A F
...
A Z
这样会死么…………这样省事儿很多啊少年……
------解决方案--------------------
我只能想到1楼类似的办法了。
------解决方案--------------------
探讨
你说的思路任何不傻的人都能想到,但是你把它实现试一下?

------解决方案--------------------
我在想,如何保证 A-B,和A-C-B的结果是一致的?如果能保证的话,也就没有最优不最优的换法了。1楼一个个查询下去就可以了。
------解决方案--------------------
还有一种方法是一次性读出现有的汇率,填充游标链表。

------解决方案--------------------
探讨

我在想,如何保证 A-B,和A-C-B的结果是一致的?如果能保证的话,也就没有最优不最优的换法了。1楼一个个查询下去就可以了。

------解决方案--------------------
探讨

引用:

我只能想到1楼类似的办法了。

想法非常简单,但是实现完全是另外一回事,就像上天一样,大致思路就是推力克服重力,这样就可以上天了,但是真的要上天的话,是简单的吗?

------解决方案--------------------
8楼那个适合于汇率变化时间间隔长的情况。
而且不像1楼那个那么抽象。
------解决方案--------------------
问题确实挺复杂,
一个是有可能有多条路径,源到目标得到一个汇率,目标到源有个汇率的倒数,每次查询都能得到两个汇率值。每次都要二叉树了。
二是还要考虑死循环,a-b,b-a,还要考虑推出机制,要记录下查询路径。
------解决方案--------------------
不知道有没有更好的算法,不过我觉得这个更多的繁琐,还不是算法的问题吧,8楼矢量的算法也许会简单点。
------解决方案--------------------
探讨

引用:

问题确实挺复杂,
一个是有可能有多条路径,源到目标得到一个汇率,目标到源有个汇率的倒数,每次查询都能得到两个汇率值。每次都要二叉树了。
二是还要考虑死循环,a-b,b-a,还要考虑推出机制,要记录下查询路径。

嘿嘿。。
足以让各位号称擅长算法的同学哑火。。。

------解决方案--------------------
探讨

引用:

引用:

引用:

问题确实挺复杂,
一个是有可能有多条路径,源到目标得到一个汇率,目标到源有个汇率的倒数,每次查询都能得到两个汇率值。每次都要二叉树了。
二是还要考虑死循环,a-b,b-a,还要考虑推出机制,要记录下查询路径。

嘿嘿。。
足以让各位号称擅长算法的同学哑火。。。


真不至于的…………

------解决方案--------------------
有好的不用,拿个烂的死的来问别人,这怎么算? 1+N等于多少? N随意,这够简单吧,你知道答案吗
------解决方案--------------------
闲的慌
------解决方案--------------------
有权图,币种为节点,汇率为权值,A->N的汇率肯定有多重汇率计算路线,根据权值可以求得最优汇率。
------解决方案--------------------
探讨
有权图,币种为节点,汇率为权值,A->N的汇率肯定有多重汇率计算路线,根据权值可以求得最优汇率。

------解决方案--------------------
任意两种币种之间的汇率默认为1.0000,这个存在很大问题。

A-B:2
A-C:3

没有D,

现在换,到底是A-D是默认的1? 还是A-B-D的2×1? 还是A-C-D的3×1?
------解决方案--------------------
提供一种思路:
首先,求出数据表中不同的SourceCurrency和不同的TargetCurrency之间的最小值N