
算法技巧
算法与技巧
北海南风
这个作者很懒,什么都没留下…
展开
-
【算法】迷宫最短路径问题(java,广度优先搜索-bfs)
这道题也可以用深度搜索,只要改变策略,找出每条路,再比较哪条路路径更短,不过这样感觉很麻烦。所以我们可以改换成广度搜索法。这里我们用#表示墙,O表示可走路径。具体看代码(注释得比较清楚)import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;public class Main { public static void main(String[] args) { char[][.原创 2020-08-20 16:23:58 · 1218 阅读 · 0 评论 -
【算法】迷宫问题(java,深度优先搜索-dfs)
这里只提供参考思路与参考代码,因为迷宫路障规格不一样,结果也不一样。迷宫问题,我们首先要定的就是一个策略,即先走哪个方向,直到那个方向没法走了,再换哪个方向。(策略不一样,路径结果也可能不一样)。这里我制定的策略为:下右上左。# --> 墙O --> 未走(可走)的路Y --> 走过的路N --> 死路(这个根据题意或自己设定)。然后我们最好把围墙给他,那样就不需要考虑边界的情况。好了,直接上代码import java.util.Arrays;/** #原创 2020-08-20 15:55:27 · 1135 阅读 · 1 评论 -
【算法】高效技巧:活用递推(java)
活用递推:(直接暴力会超时)。对一个确定位置的A来说,以它形成的PAT个数等于它左边P的个数乘以它右边T的个数。于是问题就转换为,对字符串中的每个A,计算它左边P的个数和它右边T的个数的乘积,然后把所以A的这个乘积相加就是答案。思路:设定一个数组numP,记录每一位左边P的个数(含当前位),从头到尾遍历,如果当前位是P,那么numP[i]就等于numP[i-1]+1;如果当前位不是P,那么numP[i]就等于numP[i-1]。以同样的方法可以计算出每一位右边T的个数,为了节省代码量,不妨在原创 2020-09-29 16:00:42 · 234 阅读 · 1 评论