算法
meihaifeng007
这个作者很懒,什么都没留下…
展开
-
到达目标位置最少平方移动次数
问题:在一个坐标轴上, 给定两个点,一个起点,一个终点,起点有一个方块,方块可以左右移动,但是移动的长度只能是平方数长(1,4,9,16....) , 同时坐标轴上还有洞,移动的过程中不能停在洞的位置上,不然会掉下去,问由起点到终点 至少需要多少次移动,不能到达返回-1 解决方案:记n为起始点与终点之间的距离, 在没有洞的情况下有若 n = 2*k + 1 (k为整数),原创 2012-09-21 23:32:58 · 806 阅读 · 0 评论 -
我对弗洛伊德算法的理解(求图中任意两点之间最短距离)
我对弗洛伊德算法的理解(求图中任意两点之间最短距离)基本过程:for k = 1:n for i = 1:n for j = 1:n if route(i,k)+route(k,j) < route(i,j) route(i,j) = route(i,k) + route(k,j);原创 2012-10-30 21:56:33 · 2989 阅读 · 0 评论 -
dijkstra最短路径算法和普里姆最小生成树算法优化的关键
普里姆算法:记V为图的顶点集,U为循环过程中已加入最小生成树顶点集的点集。普里姆最小生成树算法的循环是每次寻找一条连接U和V-U的边,并将这条边中属于V-U的顶点加入到顶点集U中。dijkstra最短路径算法:从起始点V0出发,每次找到一个最短路径(这条路径的终点是还没有找到的结点)记V为图的顶点集,U为循环过程中已加入最短路径的点集。dijkstra算法每次寻找一原创 2012-10-31 21:56:23 · 1263 阅读 · 0 评论 -
维持队列最大值max(1),出队入队log(n)复杂度的方法
维持栈的最大值,取最大值复杂度是O(1),出栈入栈的复杂度均是O(1)但是要实现队列的最大值,用栈的方法行不通,如果用两个栈表示队列,那么出队入队的复杂度是O(n),我想到一种方法可以使得取最大值复杂度是O(1),其它操作复杂度是O(logn) 比如原始序列 1,2,1,4,3,0,3.5 使用辅助队列记录最大值Current_max = maxleque.gettop()原创 2012-11-21 09:05:48 · 1012 阅读 · 0 评论