我在互联网上找到了这段代码,可以计算给定向量的所有可能排列。
import java.util.Vector;
class Permute {
static int count = 0;
public static void permute(Vector unvisited, Vector visited) {
if ( unvisited.isEmpty() ) {
System.out.println("Permutation: "+visited);
count++;
}
else {
//System.out.println("Trace: "+visited+" "+unvisited);
int l = unvisited.size();
for(int i = 0; i<l; i++) {
String next = String.valueOf(unvisited.remove(i));
visited.add(next);
permute(unvisited,visited);
unvisited.add(i,next);
visited.remove(next);
}
}
}
public static void main(String[] args) {
Vector objects = new Vector();
objects.add(1);
objects.add(5);
objects.add(8);
permute(objects, new Vector() );
System.out.println(count+" Permutationen gefunden");
}
}
但是我在理解代码和指令流程方面有一个小问题。我想念的是当这两条线被调用时
unvisited.add(i,next);
visited.remove(next);
permute(..)
正如我所见,在到达它们之前有一个递归函数!