import java.util.Arrays;
public class Floyd {
private static final int inf = 0x3f3f3f3f;
//表示无穷大,表示不能直接到达
private static int[][] map = {
{0,5, inf,7},
{inf,0,4,2},
{3,3,0,2},
{inf,inf,1,0}
};
private static void floyd() {
for (int k = 0; k < 4; k++) {//中转点
for (int i = 0; i < 4; i++) {
if (map[i][k] != inf) {//该行能通过中转点
for (int j = 0; j < 4; j++) {
if (i != j) {//自己不能走中转走自己的点
if (map[i][j] > map[i][k] + map[k][j]) {
/*
map[i][j]:此时节点“直接”到next节点的路径大小
map[i][k]:该节点到中转点的路径大小
map[k][j]:该中转点到next节点的路径大小
*/
map[i][j] = map[i][k] + map[k][j];
System.out.println(map[i][j]);
}
}
}
}
}
}
}
public static void main(String[] args) {
floyd();
for (int i=0;i<map.length;i++) {
System.out.println(Arrays.toString(map[i]));
}
}
}
Floyd
最新推荐文章于 2024-09-14 18:46:05 发布