[Java] Java使用递归实现全排列 →→→→→进入此内容的聊天室

来自 , 2019-04-13, 写在 Java, 查看 121 次.
URL http://www.code666.cn/view/0602940f
  1. public class AllPermutation
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //使用递归完成全排列
  6.                 char[] source=new char[]{'A','B','C'};
  7.                 char[] result=new char[source.length];
  8.                 allPermutation(0,source,result);       
  9.                
  10.         }
  11.         /**
  12.          *
  13.          * @param index当前考虑的数的下标(从0开始)
  14.          * @param source
  15.          * @param result
  16.          */
  17.         public static void allPermutation(int index,char[] source,char[] result){
  18.                 //当源数据中只有一个字符时,将该字符加入结果数组,并输出
  19.                 if(source.length==1){
  20.                         result[index]=source[0];
  21.                         show(result);
  22.                         return ;
  23.                 }
  24.                
  25.                 for(int i=0;i<result.length-index;i++){
  26.                         result[index]=source[i];
  27.                         char[] newSource=getNewSource(source,source[i]);
  28.                         allPermutation(index+1, newSource,result);
  29.                 }
  30.         }
  31.         public static void show(char[] result){
  32.                 System.out.println(result);
  33.         }
  34.         /**
  35.          * 生成去掉指定字符的新源数据数组
  36.          * @param source 原来的源数据数组
  37.          * @param c 指定去掉的字符
  38.          * @return
  39.          */
  40.         public static char[] getNewSource(char[] source,char c){
  41.                 char[] newSource=new char[source.length-1];
  42.                 for(int i=0,j=0;i<source.length;i++){
  43.                         if(source[i]!=c){
  44.                                 newSource[j]=source[i];
  45.                                 j++;
  46.                         }
  47.                 }
  48.                 return newSource;
  49.         }
  50. }
  51. //java/6492

回复 "Java使用递归实现全排列"

这儿你可以回复上面这条便签

captcha