// ABCDE 所有排列 public class B { // aa: 待排数据 // k: 考虑的当前位置(数组下标) static void f(char[] aa, int k){ if(k==aa.length-1){ System.out.println(String.valueOf(aa)); return; } for(int i=k; i<aa.length; i++){ {char t=aa[k]; aa[k]=aa[i]; aa[i]=t;} // 试探 f(aa,k+1); {char t=aa[k]; aa[k]=aa[i]; aa[i]=t;} // 回溯 } } public static void main(String[] args){ f("ABC".toCharArray(), 0); } }
import java.util.*; public class A { static List f(String s){ List lst = new Vector(); if(s.length()==1){ lst.add(s); return lst; } for(int i=0; i<s.length(); i++){ char x = s.charAt(i); List t = f(s.substring(0,i)+s.substring(i+1)); for(int k=0; k<t.size(); k++){ lst.add("" + x + t.get(k)); } } return lst; } public static void main(String[] args){ List lst = f("ABC"); for(int i=0; i<lst.size(); i++){ System.out.println(lst.get(i)); } } }