本文共 1183 字,大约阅读时间需要 3 分钟。
题意:
给你一些货币比如A,B,C,然后给你他们之间存在的对换关系,如A可以换0.5个B,B可以换10个C,C可以换2个A等.然后问你是否存在一种对换可以使得1个A可以换到大于1个A的钱.
分析:
首先把每个货币的单词映射成一个数字,表示该货币的编号.然后其实本题用到了类似Floyd的动态规划思想.
首先假设货币1对换货币2 比率为a,货币2对换货币3 比率为b.
那么货币1对换货币3比率为多少呢?为a*b.
现在我们希望货币能增值,所以如果货币1换货币3 有两种比率分别为0,5和0,6.那么我们明显放弃0.5那个,只需要用0.6的比率即可.所以这道题就成了求一个有向图的任意两点的最大兑换比例,不过这个比例不是相加运算了,而是相乘运算.
核心:利用floyd算法的dp思想。
#include #include #include
转载地址:http://nuyci.baihongyu.com/