import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner scanner=new Scanner(System.in); while (scanner.hasNext()){ int x = scanner.nextInt(); int y = scanner.nextInt(); int[][] arr= {{0,2,10,5,3,1000},{1000,0,12,1000,1000,10},{1000,1000,0,1000,7,1000},
{2,1000,1000,0,2,1000},{4,1000,1000,1,0,1000},{3,1000,1,1000,2,0}}; if (x==5){//为5时等于没走 System.out.println(0);
System.out.println("[5]"); continue;
} if(x==y){//不可达 System.out.println(1000);
System.out.println("[]"); continue;
} if (y!=0){ for (int i=0;i<6;i++){ if (i!=y-1){
arr[i][y-1]=1000;
arr[y-1][i]=1000;
}
}
} boolean[][] check=new boolean[6][6];
ArrayList<String> list=new ArrayList<>();
String time="";
String path="5"; getMin(arr, check, 4, x - 1, time, path, list);
System.out.println(list);
}
} public static ArrayList<String> getMin(int[][]arr,boolean[][]check,int x,int y,String time,String path,ArrayList<String> list){ if (x==y){
list.add(time+" "+path); return list;
} for (int i = 0; i < 6; i++) { if (x==i||arr[x][i]==1000||check[x][i]){ continue;
}
check[x][i]=true;
path=path+","+(i+1);
time=time+","+arr[x][i]; getMin(arr,check,i,y,time,path,list);
} return list;
}
} 输入4,6.结果为[,4,2,12,7,1 5,1,2,3,5,4, ,4,2,10,5 5,1,2,3,4],
求解答后面的1,2,3,4这种情况怎么跑出来的。还有从5出发到4,
这种做法先5到1到2到3到5到4的话,会在标记已走的路线中标记5到4导致 直接从5到4的路线在后面被跳过,该如何解决?