【问题标题】:Dijkstra on adjacency matrix in CDijkstra 关于 C 中的邻接矩阵
【发布时间】:2010-09-15 16:16:39
【问题描述】:

我需要一些关于 Dijkstra 的 C 算法方面的帮助。

我已经生成了我的邻接矩阵,看起来像:

int mat[NB][NB] =  {{0, 171, MAX, 132, [...]}, {171, 0, 30, 39, [...]}, , [...]};

我找到了这个实现:http://www.answers.com/topic/dijkstra-s-algorithm-1,但路径是一维数组,我的矩阵是二维数组。

有没有办法将一个转换为另一个? 或者也许有人有处理这种矩阵的方法。

提前感谢您的帮助

【问题讨论】:

    标签: c algorithm matrix dijkstra


    【解决方案1】:

    如果您将mat[0] 传递给期望int *(和大小)的函数,则该函数可以轻松地将二维矩阵视为一维矩阵。

    #include <stdio.h>
    
    int foobar(int *arr, int siz) {
        int sum = 0;
        for (int i = 0; i < siz; i++) sum += arr[i];
        return sum;
    }
    
    int main(void) {
        int mat[10][10] = {{4, -3, 7}, {5}};
        printf("%d\n", foobar(mat[0], 10*10));
        return 0;
    }
    

    编辑: ideone (http://ideone.com/2mLi7) 运行上面的程序没有任何抱怨:-)

    【讨论】:

      【解决方案2】:

      在您提供的链接中,path 是一个数组,其中写入了算法的输出。该示例中的邻接矩阵显然是dist 2D 数组。

      【讨论】:

        猜你喜欢
        • 2013-01-20
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多