第六章 图 学习小结

一、本章思维导图

 


 

 二、PTA作业与实践

1)附链接:【仅笔者可打开】

列出连通集:https://pintia.cn/problem-sets/1265660738149900288/problems/1265660848657227799

拯救007(初级版)https://pintia.cn/problem-sets/1265661844066230272/problems/1265661984353116160

拯救007(升级版)https://pintia.cn/problem-sets/1265662234056802304/problems/1265662463808200704

2)拯救007(初级版)【觉得难度很大,逻辑没想明白】

【思考过程】

  • 从岛的边缘起跳。不是从(0,0),也不是固定位置起跳
  • 不是最短路径问题。只要存在一条路,哪怕要绕很久,也可以逃出
  • 如果不存在鳄鱼使007能跳出第一步,就无法逃出
    如果不存在鳄鱼使007能跳出最后一步,就无法逃出

  • 有很多路,只要存在一条路,路径上鳄鱼与鳄鱼之间的距离<=D 且 满足能找到鳄鱼跳出第一步和最后一步(上一点),就可以逃出
  • 在思考的过程中,只想到具体的几个判断标准,但是不知道怎么去系统地实现,卡在一些操作的实现上。受最近学的最短路径和最小生成树的影响,也一直没有想到用DFS算法(捂脸)。

三、收获

1)看到老师PPT上面一种特殊的写法【邻接表的遍历边表算法】:

for(ArcNode* p=vertices[v].firstarc; p!=NULL;  p = p->next){ }

没想到while(p)也可以这样,更加理解了一些for循环的用法。

2)最小生成树不唯一。只要有相同权值的边,就不唯一,但权值之和一定相同且都是最小。

3)一个代码中,每个函数都常用到的可以设为全局变量。

4)关于数据结构,不一定限制在书上给的完整的定义,可以根据实际情况简化,只要能够表示这个结构就都可以。

像007这题,其实只需要一个结构体数组就能表示这个图,不一定要限制在书上给的数据结构。书上的是完整的,不过实际应用不一定需要那么完整。

【此题中该图的边不明确,可以说是有N(N-1)/2条边,也可以说是有满足条件(能跳过去)的几条边】

posted @ 2020-06-14 23:03  深邃是海  阅读(118)  评论(0编辑  收藏  举报