0

我需要一些关于 Dijkstra 在 C 中的算法的帮助。

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

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

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

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

提前感谢您的帮助

4

2 回答 2

0

如果您传递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)运行上面的程序没有抱怨:-)

于 2010-09-15T17:20:51.507 回答
0

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

于 2010-09-15T16:33:10.690 回答