我需要在C中使用Dijkstra算法的帮助。
我已经生成了我的邻接矩阵,看起来像是:
int mat[NB][NB] = {{0, 171, MAX, 132, [...]}, {171, 0, 30, 39, [...]}, , [...]};
我发现了这个实现:http://www.answers.com/topic/dijkstra-s-algorithm-1但路径是一维数组,我的矩阵是一个二维数组。
有没有办法将一个转换为另一个? 或者也许某人有办法处理这种矩阵。
提前感谢您提供任何帮助
答案 0 :(得分:0)
在您提供的链接中,path
是一个写入算法输出的数组。该示例中的邻接矩阵显然是dist
2D数组。
答案 1 :(得分: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)无需投诉即可运行上述程序: - )