基于数据结构的一维数组弗洛伊德算法

时间:2018-10-17 00:30:32

标签: java algorithm

我正在尝试用Java编写Floyd程序来计算给定图的最短路径,并且邻接矩阵需要存储在一个一维数组中(仅下部三角形的元素)。主要算法编写如下:

int i, j, k, m, n;
for(k=0;k<n;k++){
   for(i=1;i<n;i++){
        for (j=0; j<i; j++) {
            m=w[((i-1)*i)/2+k];
            n=w[((k-1)*k)/2+j];

            if(k>i){
                m=w[((k-1)*k)/2+i];
            }
            if(k<j){
                n=w[((j-1)*j)/2+k];
            }
            if(w[((i-1)*i)/2+j]>n+m){
                w[((i-1)*i)/2+j]=n+m;
            }
        }
    }
}

输入是n:图形的大小,int [] w:存储在数组中的邻接矩阵。 i和j是下三角矩阵的行数和列数。我不知道为什么我在“ m = w [(((i-1)* i)/ 2 + k];”行继续收到ArrayIndexOutOfBoundsException错误。我的输入是一个n = 5的图,矩阵w是一个包含10个元素的数组。有人知道怎么了吗?还是有人知道如何编写此算法?

0 个答案:

没有答案