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 level
v
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 count
n 所有结点选中 成功
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第二题。