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

posted @ 2019-06-02 10:04  porphrya  阅读(221)  评论(0编辑  收藏  举报