zoukankan      html  css  js  c++  java
  • DS博客作业06--图

    1.本周学习总结

    1.思维导图

    2.谈谈你对图结构的认识及学习体会

    觉得图明显比之前的难,单单从PTA的题目来说,现在做一题图的作业可能例子中的答案能得到,但是测试数据却过不了,查错的时间绝对比
    打代码的时间多。图可能更抽象一点,不像之前学的一些数据结构,一看到结构体就可以很好的想象出是什么样子的,不像图结构的结构体,
    看结构体完全不知道这是一个图结构,可能是因为之前的结构都是用指针,指针向哪指有比较明显的效果,图结构的指针并不是存在于一个连
    通图,而是存在于一条一条链表中,所以我觉得这章跟之前的相比比较抽象,难度有所提高。
    

    2.PTA实验作业

    2.1.题目1:7-4 公路村村通

    2.1.1设计思路(伪代码)

    Prim函数找最小生成树

    int lowcost[MAXV]存放U到V-U最短的路径
    for i=1 to g.n then
        lowcost数组赋初值,所有顶点到顶点1的距离
    end for
    lowcost[1]=0   //lowcost[i]=0为顶点i已经在最小生成树中
    for i=1 to g.n then
        k = FindMin()    //k为V-U到U距离最短的顶点
        lowcost[k]]=0
        for j =1 to  g.n then
              修改lowcost数(V-U到U的最短距离)
        end for
    end for
    

    2.1.2代码截图




    2.1.3本题PTA提交列表说明


    Q1:最后一个测试点,最大连通图错误
    A1:没有对邻接矩阵赋初值为无穷大。
    Q2:多种错误
    A2:Min设置的不够大
    没把lowcost[1]置为0
    不知道什么时候图不连通,(在查找最小值的时候,找不到U到V-U的最小值)

    2.1.题目1:7-6 修建道路

    2.1.1设计思路(伪代码)

    邻接矩阵建图
    Prim函数找最小生成树
    for i=1 to g.n then
        lowcost赋初值
    end for
    for i=1 to g.n 
        int min = 无穷大
        for i=1 to g.n then
            if (visited[i] != 1 && lowcost[i] < min)
            {                 //找出V-U中离U最近的点k,到U的权重为MIN
    	 	min = lowcost[i];      
    		k = i;
    	}
        end for
        visited[k]= 1 //visited[k] = 1表示顶点k已经在U中
        sum += lowcost[i]
        for j=1 to g.n then
          if (visited[j] != 1 && g.edges[k][j] < lowcost[j])
          修改U-V中的点到U中的最短距离
         end if
        end for
    end for
    

    2.1.2代码截图




    2.1.3本题PTA提交列表说明


    Q1:不知道怎么对已知有公路的两村庄之间进行操作
    A1:用visited数组=1代替lowcost=0表示顶点已经在U中,对矩阵中两点间已连通的的顶点赋值为0

    2.1.题目1:7-7 旅游规划

    2.1.1设计思路(伪代码)

    邻接矩阵建图
    找最短路径函数
    dist、cost数组赋初值为无穷大
    for i=0 to g. n then
        dist、cost数组赋值
        S[i]=0   //顶点i已经包含在最短路径中
        path数组赋初值   //不连通为-1
    end for
    for i=0 to g.n -1 then    //找出g.n-1个点
        MINdis = 无穷大
        for j=0 to g.n then
            if (S[j] == 0 && dist[j] < MINdis)    //找出U中顶点到S的最短距离MINdis,顶点为u
                    u = j;MINdis = dist[j];
            end if
         s[u]=1l
         for j=0 to g.n then
             if(S[j]===0)
                  修改与顶点j相连顶点的最短路径、费用及前一个顶点
             end if
          end for
    end for
    

    2.1.2代码截图





    2.1.3本题PTA提交列表说明

    Q1:最大值问题
    A1:在编译器上,邻接矩阵中的数组最大的范围只能到几百,然而题目要求是几千,到PTA提交的时候忘记更改了

    3、上机考试错题及处理办法(-2--2分)

    3.1.截图错题代码





    3.2 错的原因及处理方法

    1、在对图进行广度优先遍历时,在结点入栈时,没有考虑当前结点指向的下一个结点是否为空,只是考虑到当前结点是否为空

  • 相关阅读:
    人脸识别(Unseen Domains)
    人脸识别(Unseen Domains)
    人脸聚类
    人脸聚类
    人脸聚类
    人脸检测和识别以及检测中loss学习
    Embedding-based Retrieval in Facebook Search
    Spring Cloud Alibaba(1)---入门篇
    2020Android面经,历时一个半月,斩获3个大厂offer
    【算法总结】递归和非递归实现二叉树的先序,中序,后序遍历
  • 原文地址:https://www.cnblogs.com/porphyra/p/10962065.html
Copyright © 2011-2022 走看看