博客作业06--图
1.学习总结(2分)
1.1图的思维导图
1.2 图结构学习体会
深度遍历算法:图的深度优先遍历类似于树的前序遍历。采用的搜索方法的特点是尽可能先对纵深方向进行搜索。
(1)访问顶点v;
(2)从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历;
(3)重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。
广度遍历算法:图的广度优先遍历BFS算法和树的层次遍历算法类似,写算法时需要借助队列来实现。
Prim和Kruscal算法:两种算法都能构造最小生成树。
Dijkstra算法:计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
2.PTA实验作业(4分)
本周要求挑选出3道题目书写设计思路、调试过程。设计思路使用伪代码描述。题目选做要求:
不能选6-1,6-2,6-3
2.1 题目1:7-3 六度空间(30 分)
2.2 设计思路(伪代码或流程图)
创建队列q,t记录节点所在层数,number记录与i距离不超过6的节点个数
i先进栈
置visited[i]=1
while队列不为空
令temp=出队节点
遍历temp所连接的节点
当该节点没有遍历过
把该节点入队列
number++
如果遍历到的节点在第六层,返回所得的number值
2.3 代码截图
请贴主要函数代码,一些操作函数代码不需要贴图。
2.4 PTA提交列表说明。
- 把初始化visited[j]数组写在了创建邻接矩阵函数里,但是在调用BST(i)时,每次都要初始化该数据,应该要把它写在BST(i)函数里面。
- 出现段错误,数据不够大。
2.1 题目2:7-4 公路村村通(30 分)
2.2 设计思路(伪代码或流程图)
创建邻接矩阵
for i=1 to i<=n
dist[i]把G[1][i]干路的成本一一存放到dist[i]数组中
令总成本num=0,count=0
l令dist[S]=0
count++
while(1)
i=findmin(n)
if(没找到最小的)
break
num+= dist[i]
令dist[i] = 0
for int j=1 to j<=n
if(G[i][j]干路连通)
if(dist[j]!=0且G[i][j]<dist[j])
把dist[j]的值更新为G[i][j]
end i
end
返回总成本num
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
- 出现段错误,数组不够大。
2.1 题目3:7-2 排座位(25 分)
2.2 设计思路(伪代码或流程图)
创建邻接矩阵
while(k--)
输入a,b
if(a和b是朋友)
输出"No problem"
if(a和b不是朋友,也不敌对)
输出"OK"
if(a和b敌对)
for i=1 to i<=n
if(不存在共同好友)
输出"OK but..."
if(存在共同好友)
输出"No way"
end k
2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)
2.4 PTA提交列表说明。
- 上图这个测试点没通过。
3.截图本周题目集的PTA最后排名(3分)
本次题目集总分:310分
3.1 PTA排名(截图带自己名字的排名)
3.2 我的总分:171(1.5分)
4. 阅读代码(必做,1分)
找一篇图结构应用代码
详细说明代码思想,学习地方。
Dijkstra算法:从起点开始,首先初始化到起点的距离为0,再初始化到其他顶点的路径为无穷大。
每次选择到达起点最近的那个顶点未被选择过的顶点,查看这个顶点作为起点的边,如果发现从这个顶点到边的另一个顶点的距离会更短,就更新它。