深度优先实列:
暑假小哼想到小哈家里去玩,小哼和小哈住在不同的城市,并且小韬之前从来没有去过小哈家,这是小韬第一次上门。怎么去呢?小哼便想起了百度地图。百度地图一下子就给出了从小哼家到小哈家的最短行车方案。爱思考的小韬想知道百度地图是如何计算出最短行车方案的。下面就是城市的地图。
代码
import java.util.Scanner;
public class deepinTest3 {
public static int min=999999;
static int pt;
static int TArr[][];
static int book[];
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入点的个数");
pt=scanner.nextInt();
TArr = new int[pt][pt];
book = new int[pt];
for (int i = 0; i < pt; i++) {
book[i]=0;
for (int j = 0; j < pt; j++) {
if(i==j){
TArr[i][j]=0;
}else {
TArr[i][j]=99999;
}
}
}
System.out.println("请输入路径的个数");
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
System.out.println("请输入路径的两点和长度");
int s=scanner.nextInt();
int e=scanner.nextInt();
int l=scanner.nextInt();
TArr[s-1][e-1]=l;
}
for (int[] ints : TArr) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
book[0]=1;
dfs(0,0);
System.out.println(min);
}
public static void dfs(int cur,int dis){
//dfs最小路劲
if(cur==pt-1){
if(dis<min){
min=dis;
}
}
for (int i = 0; i < pt; i++) {
if(TArr[cur][i]!=99999 && book[i]==0){
book[i]=1;
dfs(i,dis+TArr[cur][i]);
book[i]=0;
}
}
}
}
result
0 2 99999 99999 10
99999 0 3 99999 7
4 99999 0 4 99999
99999 99999 99999 0 5
99999 99999 3 99999 0
9