Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 检查货币转换文件是否一致_Algorithm_Graph_Currency - Fatal编程技术网

Algorithm 检查货币转换文件是否一致

Algorithm 检查货币转换文件是否一致,algorithm,graph,currency,Algorithm,Graph,Currency,这是在一次采访中被问到的。您将收到一个包含货币兑换率的文件 Sample File : Currency1 Currency2 Rate USD INR 50 GBP INR 100 GBP USD 3 .... 我们需要知道这个文件是否一致?例如,为了使上述文件保持一致,第三条记录应该是GBP->USD=2,而不是3

这是在一次采访中被问到的。您将收到一个包含货币兑换率的文件

Sample File :  
Currency1      Currency2      Rate  
USD            INR            50
GBP            INR            100  
GBP            USD            3       
....

我们需要知道这个文件是否一致?例如,为了使上述文件保持一致,第三条记录应该是GBP->USD=2,而不是3。如何处理这个问题?这是一个图形问题吗?

是的,这是一个图形问题

如果任何一对货币(A,B)的任何转换路径始终给出相同的汇率,则表是一致的

所以你要找到的是两条不同的路径

假设你有一个连通图(你可以从任何东西转换成任何东西,可能通过某种中间货币)。您可以选择任何起始货币,然后像通过DepthFirstSearch或BroadthFirstSearch那样展开它(这里哪种货币并不重要),然后计算汇率。如果你达到了一种你以前从未见过的货币,储存你得到的汇率,如果你已经达到了,汇率必须是相同的(否则停下来说它不一致)

如果没有连通图,则应确保覆盖了所有货币。您可以使用上面的算法,只要能够找到未到达的货币(使用未到达的货币作为起点),就可以再次启动该算法

需要注意的几点:

  • 你有一些隐含的利率。在您的talbe中,印度卢比兑美元的汇率为0.02
  • 这些利率是相乘的。确保正确比较浮动(期望有一些小的差异)
由于您可以为精心制作的示例将内容相乘,因此可能会得到非常大或非常小的值,这将使比较更加困难。处理这种情况的一个更好的方法是记录数字(基数无关紧要)。现在乘法被加法代替了,它更稳定了。副作用是加法和减法比乘法和除法快得多