首页 > 开发 > Java > 正文

Java基于递归解决全排列问题算法示例

2024-07-13 10:13:51
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表