1.学习总结
1.1图的思维导图
1.2 图结构学习体会
1、深度遍历和广度遍历:两种算法都是以邻接表或邻接矩阵为模板的算法,两种算法能解决不同的问题。
Prim和Kruscal算法:都是从连通图中找出最小生成树的算法。Prim算法直接查找,多次寻找邻边的权重最小值,而Kruscal算法是不断按照权值从小到大查找,直到把所有边都连起来。
Dijkstra算法:选取一个顶点u,使源点v到u最短路径长度最小,然后把顶点u加入S中。
Floyd算法:这个课后运用的比较少,但实际运用起来可能会比D算法好。
拓扑排序:并不是唯一的,一定是没有回路的。
2.PTA实验作业
1.1 题目1:7-3 六度空间
1.2 设计思路
1.3 代码截图
1.4 PTA提交列表说明
一开始计数用的Count没有设为全局变量,在子函数与主函数传值中出现了问题。其次,Count初值应该是0而不是1。
2.1 题目2:7-4 公路村村通
2.2 设计思路
2.3 代码截图
2.4 PTA提交列表说明
一开始,在if条件里没有写价钱不为0,导致输出的价钱一直为0。
3.1 题目3:7-7 旅游规划
3.2 设计思路
3.3 代码截图
3.4 PTA提交列表说明
没有记录起始地址和不断更新新的起点
没有用visited数组过滤走过的路线,会走重复的路线。
3. 截图本周题目集的PTA最后排名
4. 阅读代码
用两个Dijkstra + DFS。一个求最快路径(如果相同求路径的那条),一个求最短路径(如果相同求结点数最小的那条)~~~求最快路径可以直接在Dijkstra里面求前驱结点Timepre数组~~~求最短路径因为要求结点数最小的那条,所以要用dispre的二维数组存储所有结点的最短路径,然后用DFS求出满足条件的结点数最小的那条。