一个从某个数组中抽取n个元素的全排列小算法。
具体应用可以看Subsets题目。
public class Test {
public static int b[];
public static int totalcount=0;
//a[]是被抽取的数组
//except是抽取的个数
//count2是抽取第几次,一共只能抽except次
//count是对每次抽取的数进行不重复处理
public static void permutation(int a[],int count,int count2,int except){
if(count2==except)
{
System.out.println(Arrays.toString(b));
totalcount++;
}
else
{
if(count2==0)
{
b=new int[except];
}
for(int i=count;i<a.length;i++){
b[count2]=a[i];
permutation(a,i+1,count2+1,except);
}
}
}
public static void main(String[] args) {
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
permutation(a,0,0,5);
System.out.println(totalcount);
}
}