十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本文實例講述了Java基于遞歸解決全排列問題算法。分享給大家供大家參考,具體如下:

排列問題
設R={r1,r2,...,rn}是要進行排列的n個元素,Ri=R-{ri}。集合x中元素的全排列記為Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一個排列前加上前綴ri得到的排列。R的全排列可歸納如下:
當n=1時,Perm(R)=(r),其中r是集合中唯一的元素;
當n>1時,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3)。。。。(rn)Perm(Rn)構成。
public class AllSort {
public static void perm(int[] list, int k, int m) {
if( k == m) {
for (int i = 0; i <=m; i++) {
System.out.print(list[i]);
}
System.out.println();
}
else{
for(int i = k; i <= m; i++) {
swap(list,k,i);
perm(list, k+1 , m);
swap(list,k,i);
}
}
}
public static void swap(int[] list, int a, int b) {
int temp;
temp = list[a];
list[a] = list[b];
list[b] = temp;
}
public static void main(String args[]) {
int[] list = new int[5];
for(int i = 0; i < list.length; i++) {
list[i] = i+1;
}
perm(list,0,list.length-1);
}
}