DS博客作业06--图

1.本周学习总结

 1.1思维导图

 1.2谈谈你对图结构的认识及学习体会。

图这一章节算法很多,用到适当的算法可以是代码量及存储空间少很多,使得更加便利,例如用广度遍历时好比一棵树,访问初始顶点的所有没有被访问过的孩子,再从访问的孩子里访问它的所有没有被访问过的孩子,直至所有孩子都被访问过为止,使用队列会比较好

2.PTA实验作业

 2.1.题目7-1图着色问题

 2.1.1设计思路

建立邻接矩阵 
定义vis[MAXV]={0}标志颜色是否存在,0为不存在,1为存在
定义颜色种类num=0,flag表示方案正误,1为错误,0为正确; 
for i=1 to g.v
    输入颜色种类;
    if 该颜色不存在{
        颜色种类num++;
        标记该颜色存在 
    } 
end for
if 颜色种类不为k种,flag=1; 
遍历每个顶点
    if 两个顶点相邻并且颜色相同
        flag=1;退出循环
if flag为1   输出NO
else  输出Yes 

 2.1.2代码截图

 2.1.3本题PTA提交列表说明

  • 这当中的问题存在
    顶点遍历错误

 2.2 题目2 7-3六度空间

 2.2.1设计思路

首先要确认的是用 DFS还是BFS,考虑到你要找的人,可能是你朋友的朋友的朋友。。每个人都有自己的交际圈,所以把每个人(结点)的交际圈看成一层,那么只要不超过六层的结点就是符合要求的,因此应用BFS。

 2.2.2代码截图


 2.2.3本题PTA提交列表说明。

题中两个正整数,分别表示社交网络图的结点数N(1<N≤104,表示人数)、边数M(≤33×N,表示社交关系数)
所以用数组时二维数组开的太大了。

 2.3 题目3 7-4公路村村通

 2.3.1设计思路

定义数组a[][]记录边的权值关系,初始值为inf;
定义变量min表示每条道路最低预算;变量sum表示最低成本 
    for i=1 to n
        dis[i]=a[1][i]; 
    end for 
    for i=2 to n{ 
       min置为inf;
    for j=1 to n
        if (顶点未被访问且该边权值小于min) {
            最低预算min置为该边权值;
            记录最近顶点的编号flag; 
        }
            sum累加最低成本 
            flag顶点标记已访问 
            for j=1 to n
                修改数组dis}
    end for
   if(sum值越界即表示不连通)输出-1;
   else 输出 sum的值;

 2.3.2代码截图

 2.3.3本题PTA提交列表说明。

一直有个点没有过去,后来经过不断尝试发现时判断村是否全部连通的问题,在询问同学后成功解决。

3、上机考试错题及处理办法

 3.1.截图错题代码

一、7-1六度空间


 3.2 错的原因及处理方法

错误:

正确:

图中x[p->adjvex] = 1;写成了x[p->adjvex] ==1;
真的就是一个“=”毁所有,太致命了。呜呜

二、7-2公路村村通

  • 这次的题代码量有点多,到最后实在写不完了,前面7-1六度空间一直卡在那太久,一直过不去心态有点炸了。就写不下去了。
原文地址:https://www.cnblogs.com/zrjAIRON/p/10961903.html