Xiaolang_zzz 2023-01-02 14:29 采纳率: 100%
浏览 64
已结题

如何用迪杰斯特拉函数得到最短路径和距离

问题遇到的现象和发生背景

利用迪杰斯特拉方法求最短路径

遇到的现象和发生背景,请写出第一个错误信息

代码中有错误 但是没有报错

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

> #include<stdio.h>
#include<math.h>
#include<string.h>
#include <stdlib.h>

#define unreach 100 //没有途径的点之间的距离

struct map {
    int edge[12][12];//储存距离
    int S[12];//储存点的信息
    int edgenum;//边的个数
}Map;

//输入路径图的信息
map  Creatmap(int m) {
    const char* path = "C:\\Users\\tyl666\\题目5-最短路径规划\\路径文件.txt";
    FILE* fp = NULL;
    fopen_s(&fp, "path", "r");

    int a, b, c;//点点边
    //初始化点点距
    for (int i = 0;i < 12;i++) {
        for (int j = 0;j < 12;j++) {
            if (i == j) {
                Map.edge[i][j] = 0;
            }
            else {
                Map.edge[i][j] = unreach;
            }
        }
    }
    //从文件中读取点与点之间的距离
    for (int i = 0;i < 21;i++)
    {
        fscanf_s(fp, "%d,%d,%d", &a, &b, &c);
        Map.edge[a][b] = c;
        Map.edge[b][a] = c;
    }
    fclose(fp);

    return Map;
}
//迪杰斯特拉算法
void Dijkstra(map Map, int d, int m)//d设为起点
{
    int i, j, n;
    d = 1;
    //利用动态数组
    int* dist=new int[12];//储存当前最短路径的长度
    char* path=new char[12];//储存最短路径
    for (i = 0;i < 12;i++) {
        dist[i] = Map.edge[d][i];
        path[i] = Map.S[d] + Map.S[i];
    }
    //开始遍历路径图
    for (n = 1;n < 12;n++) {
        for (i = 0, j = 0;i < 12;i++) {
            if (dist[i] != 0&&dist[i]<dist[j]) {
                j = i;
            }
        }
        printf("%d %d", dist[i],path[j]);
        //逐步寻找到最短路径及其距离
        for (i = 0;i < 12;i++) {
            if (dist[i] > dist[j] + Map.edge[j][i]) {
                dist[i] = dist[j] + Map.edge[j][i];
                path[i] = path[j] + Map.S[i];
            }
        }
        dist[j] = 0;
    }
}

int main()
{
    int a = 21;
    int m = 1;
    Map = Creatmap(a);
    Dijkstra(Map, m, a);

    return 0;
}

运行结果及详细报错内容

出现了debug警告

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

读取文件数据写入了地图数据,构造函数求最短路径

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

得到最短路径和距离

  • 写回答

3条回答 默认 最新

  • heart_6662 2023-01-02 14:55
    关注

    望采纳!!点击该回答右侧的“采纳”按钮即可采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 赞助了问题酬金15元 1月2日
  • 创建了问题 1月2日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效