java floyd_百度百科里面的floyd算法java的代码,总是无法运行。请问是代码有问题吗,如何编译啊?...
展開全部
不能編譯運(yùn)行的說法是錯(cuò)誤,但是結(jié)果是否正確,我就32313133353236313431303231363533e59b9ee7ad9431333335303539不知道了,我不懂這個(gè)算法public?class?FLOYD?{
int[][]?length?=?null;//?任意兩點(diǎn)之間路徑長度
int[][][]?path?=?null;//?任意兩點(diǎn)之間的路徑
public?FLOYD(int[][]?G)?{
int?MAX?=?100;
int?row?=?G.length;//?圖G的行數(shù)
int[][]?spot?=?new?int[row][row];//?定義任意兩點(diǎn)之間經(jīng)過的點(diǎn)
int[]?onePath?=?new?int[row];//?記錄一條路徑
length?=?new?int[row][row];
path?=?new?int[row][row][];
for?(int?i?=?0;?i?
//?處理圖兩點(diǎn)之間的路徑
for?(int?j?=?0;?j?
if?(G[i][j]?==?0)
G[i][j]?=?MAX;//?沒有路徑的兩個(gè)點(diǎn)之間的路徑為默認(rèn)最大
if?(i?==?j)
G[i][j]?=?0;//?本身的路徑長度為0
}
for?(int?i?=?0;?i?
//?初始化為任意兩點(diǎn)之間沒有路徑
for?(int?j?=?0;?j?
spot[i][j]?=?-1;
for?(int?i?=?0;?i?
//?假設(shè)任意兩點(diǎn)之間的沒有路徑
onePath[i]?=?-1;
for?(int?v?=?0;?v?
for?(int?w?=?0;?w?
length[v][w]?=?G[v][w];
for?(int?u?=?0;?u?
for?(int?v?=?0;?v?
for?(int?w?=?0;?w?
if?(length[v][w]?>?length[v][u]?+?length[u][w])?{
length[v][w]?=?length[v][u]?+?length[u][w];//?如果存在更短路徑則取更短路徑
spot[v][w]?=?u;//?把經(jīng)過的點(diǎn)加入
}
for?(int?i?=?0;?i?
int[]?point?=?new?int[1];
for?(int?j?=?0;?j?
point[0]?=?0;
onePath[point[0]++]?=?i;
outputPath(spot,?i,?j,?onePath,?point);
path[i][j]?=?new?int[point[0]];
for?(int?s?=?0;?s?
path[i][j][s]?=?onePath[s];
}
}
}
void?outputPath(int[][]?spot,?int?i,?int?j,?int[]?onePath,?int[]?point)?{//?輸出i//
//?到j(luò)//
//?的路徑的實(shí)際代碼,point[]記錄一條路徑的長度
if?(i?==?j)
return;
if?(spot[i][j]?==?-1)
onePath[point[0]++]?=?j;
//?System.out.print("?"+j+"?");
else?{
outputPath(spot,?i,?spot[i][j],?onePath,?point);
outputPath(spot,?spot[i][j],?j,?onePath,?point);
}
}
public?static?void?main(String[]?args)?{
int?data[][]?=?{
{?0,?27,?44,?17,?11,?27,?42,?0,?0,?0,?20,?25,?21,?21,?18,?27,?0?},//?x1
{?27,?0,?31,?27,?49,?0,?0,?0,?0,?0,?0,?0,?52,?21,?41,?0,?0?},//?1
{?44,?31,?0,?19,?0,?27,?32,?0,?0,?0,?47,?0,?0,?0,?32,?0,?0?},//?2
{?17,?27,?19,?0,?14,?0,?0,?0,?0,?0,?30,?0,?0,?0,?31,?0,?0?},//?3
{?11,?49,?0,?14,?0,?13,?20,?0,?0,?28,?15,?0,?0,?0,?15,?25,?30?},//?4
{?27,?0,?27,?0,?13,?0,?9,?21,?0,?26,?26,?0,?0,?0,?28,?29,?0?},//?5
{?42,?0,?32,?0,?20,?9,?0,?13,?0,?32,?0,?0,?0,?0,?0,?33,?0?},//?6
{?0,?0,?0,?0,?0,?21,?13,?0,?19,?0,?0,?0,?0,?0,?0,?0,?0?},//?7
{?0,?0,?0,?0,?0,?0,?0,?19,?0,?11,?20,?0,?0,?0,?0,?33,?21?},//?8
{?0,?0,?0,?0,?28,?26,?32,?0,?11,?0,?10,?20,?0,?0,?29,?14,?13?},//?9
{?20,?0,?47,?30,?15,?26,?0,?0,?20,?10,?0,?18,?0,?0,?14,?9,?20?},//?10
{?25,?0,?0,?0,?0,?0,?0,?0,?0,?20,?18,?0,?23,?0,?0,?14,?0?},//?11
{?21,?52,?0,?0,?0,?0,?0,?0,?0,?0,?0,?23,?0,?27,?22,?0,?0?},//?12
{?21,?21,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?27,?0,?0,?0,?0?},//?13
{?18,?41,?32,?31,?15,?28,?0,?0,?0,?29,?14,?0,?22,?0,?0,?11,?0?},//?14
{?27,?0,?0,?0,?25,?29,?33,?0,?33,?14,?9,?14,?0,?0,?11,?0,?9?},//?15
{?0,?0,?0,?0,?30,?0,?0,?0,?21,?13,?20,?0,?0,?0,?0,?9,?0?}?//?16
};
for?(int?i?=?0;?i?
for?(int?j?=?i;?j?
if?(data[i][j]?!=?data[j][i])
return;
FLOYD?test?=?new?FLOYD(data);
for?(int?i?=?0;?i?
for?(int?j?=?i;?j?
System.out.println();
System.out.print("From?"?+?i?+?"?to?"?+?j?+?"?path?is:?");
for?(int?k?=?0;?k?
System.out.print(test.path[i][j][k]?+?"?");
System.out.println();
System.out.println("From?"?+?i?+?"?to?"?+?j?+?"?length?:"
+?test.length[i][j]);
}
}
}
總結(jié)
以上是生活随笔為你收集整理的java floyd_百度百科里面的floyd算法java的代码,总是无法运行。请问是代码有问题吗,如何编译啊?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小说中场景的功能_场景在小说中的作用
- 下一篇: android 上下数字滚动_原来PPT