Java基础
1.容器*
2.图
2.1存储方式*
无所谓性能:邻接矩阵(数组)
高校存储:邻接表(链表)
2.2遍历方式*
BFS广度优先遍历:利用队列,用来求非带权单源最短路径
DFS深度优先遍历:递归
2.3最小生成树(求最少边的连通子树)
Prim
Kruskal
2.4最短路径*
djkstra:正权值有向图
3.4.1 Floyd
- 正负有无向图,但不能有带负权值的回路
- 思路:用邻接矩阵表示初始的距离,每两点的距离都是直连距离,连自己为0,无连线的为无穷大;每次找中转站,如果加入了中转站距离变短,那么两点之间的距离就更新。
- 材料:三重循环、2个二维数组
- 易错点:无穷大的那个数字设置得不对
3.DP(动态规划)
状态压缩DP
普通DP:暴力递归(容易超时),用数组保留中间结果进行DP,滚动数组(空间复杂度很低)
根据目前做过的题目来看,动态规划一般是求最好的结果的问题、从前往后推的问题(用树可以表示)