电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

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


发布日期:2021/9/19
 

//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;

}

上一篇:I2C总线驱动在嵌入式系统中的两种实现

下一篇:artDialog双击会关闭对话框的修改过程分享