以下算法打印出旅行员走完整个城市树的路径, 以及每条路径之和
package recursive;
public class Sales {
static boolean[] visited = new boolean[5];
static int cc = 0;
static int[][] edge = {{0, 1, 2, 3, 4}, {1, 0, 1, 2, -1}, {2, 1, 0, -1, 2},
{3, 2, -1, 0, 1}, {4, -1, 2, 1, 0}};
static int[] x = new int[5];
public static void main(String[] args) {
visit(0, 0);
}
//t indicates the depth of the tree, from 0 to 4
//i indicates the node visited at depth t
private static void visit(int i, int t) {
visited[i] = true;
x[t] = i;
if (t == 4) {
for (int e=0;e<x.length;e++) {
System.out.print(x[e] + "->");
}
System.out.println("");
System.out.println("path length == " + cc);
return;
}
for (int j=0;j<5;j++) {
if (!visited[j] && edge[i][j] > 0) {
cc = cc + edge[i][j];
visit(j, t + 1);
cc = cc - edge[i][j];
visited[j] = false;
}
}
}
}