熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

求一個數組元素的所有排列組合

2022-06-13   來源: Java核心技術 

  //array為要組合的數組size為長度firstIndex為要放在所以組合最前面的元素result保存所有組合每一行為一個組合

  public int func(int[] arrayint[][] result){

  //所有遞歸的結果都保存在result中並且最低層的組合結果保存在最後列

  //返回本次遞歸組合的個數

  int size = ls;

  if(size==)//如果沒有元素不再向下遞歸

  return ;

  int num = ;//本層遞歸的總組合數

  int subnum = ;//本層每個元素作為頭元素其他元素的組合個數(遞歸返回)

  for(int i=;i<size;i++){

  int[] newArray = new int[size];

  for(int j=k=;j<size;j++){//獲取待排序子數組

  if(j!=i)

  newArray[k++]=array[j];

  }

  subnum=func(newArrayresult);//遞歸對後面的子數組組合並返回以array[i]開頭的組合數

  num+=subnum;

  //將組合好的所有新數組中的每個組合放在array[i]後面構成本層的組合保存到數組中

  int j = resultrowssubnum;//表示本次組合的結果從哪行開始插入resultrows表示數組已有行數

  while(j<resultrows)

  result[j++][lssize] = array[i];//將頭元素加上

  }

  return num;

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201401/30283.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.