我不知道该怎么写输出搜索[][]a后得到的最短路径,请各位大侠们帮帮忙。很急!!!

import java.lang.*;
import javax.swing.*;
public class dijkstra{
public static void dijkstra(int v,float[][]a,float[]dist,int[]prev){
//单元最短路径问题的Dijkstra算法
int n=dist.length-1;
if(v<1||v>n) return;
boolean[]s=new boolean[n+1];
//初始化
for(int i=1;i<=n;i++){
dist[i]=a[v][i];
s[i]=false;
if(dist[i]==Float.MAX_VALUE) prev[i]=0;
else prev[i]=v;
}
dist[v]=0;s[v]=true;
for(int i=1;i<n;i++){
float temp=Float.MAX_VALUE;
int u=v;
for(int j=1;j<=n;j++){
if((!s[j])&&(dist[j]<temp)){
u=j;
temp=dist[j];
}
s[u]=true;
for(int j1=1;j1<=n;j1++)
if((!s[j1])&&(a[u][j1]<Float.MAX_VALUE)){
float newdist=dist[u]+a[u][j1];
if(newdist<dist[j1]){
//Dist[j]减少
dist[j1]=newdist;
prev[j1]=u;
}
}
}
}
};
public static void main(String[] args){

final float[] dist=new float[12];
int[]prev=new int[12];
final float max1=Float.MAX_VALUE;
dijkstra D=new dijkstra(){
private float max;
float [][]a={
{0,15,4,7,max,max,max,max,max,max,max,max},
{15,0,7,max,15,12,max,max,max,max,max,max},
{4,7,0,max,16,max,max,max,max,max,max,max},
{7,max,max,0,8,max,max,max,26,max,max,max},
{max,15,16,26,8,0,20,18,max,30,max,max,max},
{max,12,max,max,20,0,max,max,max,30,max,max},
{max,max,max,max,18,max,0,3,max,16,max,max},
{max,max,max,max,max,max,3,0,7,max,max,max},
{max,max,26,max,30,max,7,0,5,15,max},
{max,max,max,max,max,30,16,max,5,0,max,20},
{max,max,max,max,max,max,max,max,15,max,0,9},
{max,max,max,max,max,max,max,max,max,20,9}
};
for(i=0;i<a.length;i++){
for(j=0;j<a.length;j++){
D[i]=a[i][j];
if(D[i]!=max)p[i]=v+1;
else p[i]=0;
s[i]=false;
}
}
s[v]=true;
System.out.println(D);
}
}

我是C,看java有困难。
你建一个distance数组,用来存起点到各点的距离,每次更新d数组就行了。
我有C代码,可能帮助不大,可以Hi我。
温馨提示:答案为网友推荐,仅供参考
相似回答