十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

关于图论【最短路径之Dijkstra算法(朴素版)|卡码网47.参加科学大会的思考】

关于图论【最短路径之Dijkstra算法(朴素版)|卡码网47.参加科学大会的思考】 目录一、本题题目二、本题代码三、关键思路四、注意事项一、本题题目// 展示完整题目二、本题代码// 展示完整代码三、关键思路1、找出距离源点最近的且未被访问过的节点2、标记访问过的节点3、更新未访问过的节点到源点的距离四、注意事项1、根据debug的结果去找问题的时候要一步一步踏踏实实的溯源比如下面这个错误注意下图所示右上角第一个红色框里的是错误代码// 因为运行的时候报错答案错误// 于是我们写了一段debug的调试代码段就是把minDistance数组输出出来// 发现输出的全是INT_MAX说明minDistance数组根本没有更新// 去代码里找更新minDistance数组的部分// 检查了一下条件语句是没问题的但是更新minDistance数组需要用到grid[cur][j]// 所以去看一下grid[cur][j]有没有问题// grid[cur][j]只有在构建初始信息的时候有动过// 这个时候要看一下grid数组里的s,t,val是哪里来的// 发现问题没有输入s,t,val所以正确的代码如下图所示// 这个时候minDistance数组的输出就正常了// 如果找不到直接错误原因去看跟他相关的东西有没有问题找间接错误原因2、构建初始信息也是要注意的地方// 要用这个东西你输入了没有3、求最短路径之Dijkstra算法和求最小生成树之Prim算法有异曲同工之妙4、C语法里INT_MAX要引入的头文件是climits5、注意出现错误的时候要自己知道怎么定位错误// 这道题debug的方式是把minDistance数组输出出来
返回列表