dfs实现。
import java.util.*;
import java.util.Stack;
//全排列,回溯实现
public class allsort {
static Stack<String> path = new Stack<>();
static int [][] graph = {
{0,1,2,1},
{1,0,0,0},
{2,0,0,1},
{1,0,1,0}};
//节点数
static int n = 4;
//标记函数
static int[][] vis = new int[n][n]; // vis[u][v]代表u,v两点间的已访问次数
private static void dfs(int u) {
for(int v=0;v<n;v++){
//有边 && 已访问次数小于两点间连接数
if(graph[u][v] > 0 && vis[u][v] < graph[u][v]){
//路是双向的
vis[u][v]++;
vis[v][u]++;
//v作为新的起点,递归
dfs(v);
path.push((char)('A'+u)+ "->" + (char)('A'+v));
}
}
}
public static void main(String[] args) {
dfs(1);
while(!path.isEmpty())
System.out.println(path.pop());
}
}