本文實例講述了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); }}
運行結果:
123451235412435124531254312534132451325413425134521354213524143251435214235142531452314532153421532415432154231524315234213452135421435214532154321534231452315423415234512354123514243152435124135241532451324531253412531425431254132514325134321453215432415324513254132514312453125431425314523154231524341253415234215342513452134512351423512435412354213524135214423154235142135421534251342531432154325143125431524351243521413254135241235412534152341532453124532145132451234521345231523415231452431524135214352134532415321453421534125314253124543215431254231542135412354132513425132451432514235124351234
希望本文所述對大家java程序設計有所幫助。
新聞熱點
疑難解答
圖片精選