今天中午做了一下最短路径的题,用的弗洛伊德算法,这个题是求把所有的点都连接在一起后的最小值,刚开始,我想的是用并查集做,因为把所有点用最短的路连起来就是树,但是这个题是双向的,是有向的,两个点互相走的路径不一样,所以适合无向图的最小生成树算法就不行了,要用最短路径算法弗洛伊德,弗洛伊德之后算出了各个点之间的最小值,然后从一个点出发,找出最大值,就是所有点连通的最大值(除非不连通),以所有的点为起点找出最大值后,再取最小值,就是全部联通的最小值了。
在中午最后还做了一道dfs题,这道题也是一道走无边界的迷宫(当然出了边界就算输),名字好像是打冰球。这道题和普通迷宫题的不同在于,你向一个方向走了,就不能停下了,直到撞了墙(墙被撞了,下一回合就会消失),这算是走了一步,读起来很有趣,做起来就不好了,一直错,中午没睡觉都没调试好,后来看了题解,才发现问题,并改对。
下午又做了两道弗洛伊德的最短路径的问题,这两道都是关于钱币兑换的利率的题,当然算法也都是一样的,都是弗洛伊德,第一道利率的题,只需要把利率弗洛伊德完,然后看看所有的兑换利率有没有大于1的就可以解决了,但是第二道是有本金的,而且还有佣金,也是算赚钱了没有,这道题略微复杂一点,弗洛伊德本来求负权回路,这里是求得正权回路,其实和第一道也差不多,第一道也是一个正权回路,第二道利率的题还参考了大佬的题解,修改过程才过。
6天结束了,可还有几道题没做,希望越做越熟练,慢慢成长。