题目链接:
简单的货币转换问题,给定多种货币,以及货币之间的汇率,问能否通过货币的转换实现收益。
例如:
1 US Dollar buys 0.5 British pound, 1 British pound buys 10.0 French francs, and 1 French franc buys 0.21 US dollar. Then, by converting currencies, a clever trader can start with 1 US dollar and buy 0.5 * 10.0 * 0.21 = 1.05 US dollars, making a profit of 5 percent.
【解法1】
Floyd算法。
Floyd算法可以求任意两点的最短距离, 这里通过小小的变形。求最大”收益“;
#include #include #include #include
【解法2】
SPFA 判环 ,如果起点可以通过汇率转换增大。那么在SPFA的松弛操作中会无限加入队列,判断是否重复加入n次以上即可。
和我的解法一致。
#include #include #include #include #include #include