在《组合数学》里面全排列是一个常见的问题?br />
描述如下Q有x1,x2,x3,...xn,共n个元素,打印出它的全排列?br />
如:1 Q?2 Q?3
?U排列: 123Q?132Q?213Q?231Q?312Q?321
思\Q?元素的全排列Q其实就是遍列全部元素组成的一个排列树Q用回溯法可以得到比较好的效?特别是空间上Q,׃遍列整棵树,旉复杂度ؓOQn!)
1 /**
2 * 打印出list[k,m]的全排列
3 * @param list
4 * @param k beginning index
5 * @param m finishing index
6 */
7 static void getPerm(Object[] list, int k , int m){
8 if( k == m){
9 for(int i = 0; i <= m; i++)
10 System.out.print(list[i]);
11 System.out.println();
12 }else
13 for( int i = k; i <= m; i++){
14 MyMath.swap(list, i, k);
15 getPerm(list, k+1, m);
16 MyMath.swap(list, i, k);
17
18 }
19 }
引申Q类似此U算法的q有是打印字符Ԍ如:ABCQ的真子集,其核心算法还是一L