A星算法 A星和Dijkstra算法唯一区别在于堆中排序的依据。distance数组仍然保存实际代价,预估代价只影响堆的弹出顺序。 Dijkstra根据源点到当前点的实际代价进行排序。 A星根据源点到当前点的实际代价+当前点到终点的预估代价进行排序 预估函数要求:当前点到终点的预估代价<=当前点到终点的实际代价,越接近越快 常用选择:曼哈顿距离、欧氏距离、对角线距离(行差值列差值绝对值的最大值) Floyd算法 Floyd算法是一种用于解决所有节点对之间最短路径问题的算法。它通过动态规划的思想,逐步计算出所有节点对之间的最短路径。 Floyd算法使用一个二维数组distance来记录...

  2iwnlIICHNbO   2天前   14   0   0 算法与数据结构

异或运算 异或运算就是无进位相加 异或运算满足交换律、结合律 0^n=n,n^n=0 整体异或和为x,整体中某个部分的异或和为y,那么剩下的部分的异或和为x^y。即若a^b=c,则a=c^b,b=c^a 交换两个数 include<iostream> include<vector> usingnamespacestd; //ij时会出错 voidmySwap(vector<int>&arr,inti,intj){ arr[i]=arr[i]^arr[j]; arr[j]=arr[i]^arr[j]; arr[i]=arr[i]^arr[j];...

  2iwnlIICHNbO   2天前   11   0   0 算法与数据结构

扩点最短路 不把实际位置看作图上的点,而是把实际位置和该位置的所有状态的组合看作是图上的点,BFS或者Dijkstra的过程不变,只是增加了一些点。 864.获取所有钥匙的最短路径 include<iostream> include<vector> include<algorithm> include<queue> usingnamespacestd; classSolution{ public: introws,columns; //最多6把钥匙 intmax_k=6; intkey=0; vector<int>move{-1,...

  2iwnlIICHNbO   3天前   14   0   0 算法与数据结构
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~