大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 求一个数组元素的所有排列组合

求一个数组元素的所有排列组合

关键词:Java求一个数组元素的所有排列组合  阅读(2922) 赞(15)

[摘要]本文主要是对求一个数组元素的所有排列组合的讲解,希望对大家学习求一个数组元素的所有排列组合有所帮助。

  //array为要组合的数组,size为长度,firstIndex为要放在所以组合最前面的元素,result保存所有组合,每一行为一个组合

  public int func(int[] array,int[][] result){

  //所有递归的结果都保存在result中,并且最低层的组合结果保存在最后列

  //返回本次递归组合的个数

  int size = array.cols;

  if(size==0)//如果没有元素,不再向下递归

  return 0;

  int num = 0;//本层递归的总组合数

  int subnum = 0;//本层每个元素作为头元素,其他元素的组合个数(递归返回)

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

  int[] newArray = new int[size-1];

  for(int j=0,k=0;j<size;j++){//获取待排序子数组

  if(j!=i)

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

  }

  subnum=func(newArray,result);//递归,对后面的子数组组合,并返回以array[i]开头的组合数

  num+=subnum;

  //将组合好的所有新数组中的每个组合放在array[i]后面,构成本层的组合,保存到数组中

  int j = result.rows-subnum;//表示本次组合的结果从哪行开始插入,result.rows表示数组已有行数

  while(j<result.rows)

  result[j++][result.cols-size] = array[i];//将头元素加上

  }

  return num;

  }



相关评论