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

  • 相关阅读:
    UOJ.26.[IOI2014]Game(交互 思路)
    Good Bye 2016 F.New Year and Finding Roots(交互)
    Codeforces.835E.The penguin's game(交互 按位统计 二分)
    Codeforces.744B.Hongcow's Game(交互 按位统计)
    Codeforces.862D.Mahmoud and Ehab and the binary string(交互 二分)
    正睿OI 提高 Day1T3 ZYB玩字符串(DP)
    划分vlan
    2三层交换机实现vlan间的路由
    交换机基础-交换机远程telnet
    自动化运维环境的搭建问题处理
  • 原文地址:https://www.cnblogs.com/porphyra/p/10962065.html
Copyright © 2011-2022 走看看