知识大全 求一个数组元素的所有排列组合

Posted 元素

篇首语:究竟什么是真理?——不可驳倒的谬误便是。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 求一个数组元素的所有排列组合相关的知识,希望对你有一定的参考价值。

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

  public int func(int[] array int[][] 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(newArray result);//递归 对后面的子数组组合 并返回以array[i]开头的组合数

  num+=subnum;

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

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

  while(j<result rows)

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

  

  return num;

cha138/Article/program/Java/hx/201401/30283

相关参考