1.本周学习总结
1.1.思维导图
1.2.谈谈你对图结构的认识及学习体会。
本章学习了图的相关知识,图和树的区别,表面上是:树的关系是一对多,图的关系是多对多,但是图用到递归的地方是少于树的,而图的结构体要比树复杂很多。图的存储结构有两种,邻接矩阵和邻接表,邻接矩阵的本质是二维数组,所以操作起来相对简单一些,结构体也比较简单,只有二维数组,顶点数和边数
2.PTA实验作业
要求挑3道题目写设计思路、调试过程。设计思路用伪代码描述。题目选做要求:
2.1.六度空间
2.1.1设计思路
SixBFS:
while qu不为空
出队到v
for i=0 to n
if该边存在并且未曾遍历
count++
边的另一个顶点入队
visited标记遍历过
tail记录为i
end if
if lastv //当前结点的所有相邻可能已经全部判断完毕
level++
last=tail
end if
if levelv
break
end if
end while
return count
2.1.2代码截图
2.1.3本题PTA提交列表说明
本题的完成很大程度上是在范华同学的帮助下完成的,在他的帮助下,我在考试前把这道题敲了三遍,并理解了代码的含义,才得以考试中完成这道题。
2.2. 公路村村通
2.2.1设计思路
Prim:
初始化count=1,cost=0;//cost为寻找路径中选中的结点数,最后count应该等于n
dist数组通过FindMin函数,是第i个结点到附近结点中最短的路径
while(1)
v通过FindMin函数,v是dist的顶点
if v-1 //v不存在
break;
else
cost+=dist[v];
count++;
end if
dist[v]变零,表示被选中
for i=1 to n
如果顶点i有dist但v i之间的直接距离map比dist小
更正最短路径
end for
end while
if countn 所有结点选中 成功
else 有回路 返回-1
end if
2.2.2代码截图
2.2.3本题PTA提交列表说明
2.3.图着色
2.3.1设计思路
CreateMGraph函数建好邻接矩阵
flag1 用于判断颜色数是否符合要求
flag2 用于判断涂色是否符合要求
color数组存放每次涂色的颜色
两个for循环统计颜色数//数组基操
if(count!=k)如果颜色不符合
flag1=0 直接输出No
else
for i=0 to n
for j=0 to n
遍历邻接矩阵 也就是遍历二维数组
if edges[i][j]存在&& color[i]==color[j]//相邻顶点颜色重合
flag2=0
end if
end for for
根据flag2判断输出Yes或No
2.3.2代码截图
2.3.3本题PTA提交列表说明
3、上机考试错题及处理办法
3.1拓扑排序
3.1.1
只输出了一个error
3.1.2
考试前复习力度不够,对代码极不熟悉,所以考试是才出此下策,只输出一个error,白嫖5分
3.2公路村村通
3.2.1
只输出一个-1,考前没有熟悉代码,白嫖10分
3.2.3
解决方案见上面PTA第二题。