问题补充说明:请问:从M个数种选出N个(M>N),不记顺序,用java程序如何实现.... 我想问的是怎么实现,循环+随机数么?
//不加分就真对不起我来自的答案了
publicstaticSetgetSubArray(List<In360问答teger>in术伟组官误士领itList,intsize){
Se理较tresult=newHashSet();
getNex调眼松滑缺发架tIntArray(initList,null,size,resu卫保氢建客花lt);
retur形货二钟nresult;
}
p翻安理哪力八阶测怕ublicstatic油山他丰波沿的绝引要voidmain(Str哥红轴ing[]args){
Listinit兴List=newArrayList(8);
in装关局河举只绍商并秋itList.add(1);
initList.add(2);
initLis几t.add(3);
initLi本缺田st.add(4);
initList.add(5);
initList.add(6);
initList.add(7);
initList.add(8);
Set<int[]>res=g投帮础呀确省例照滑etSubArray(球本入例线叶知功雨济病initList,4);
}
publicstaticvoidgetNextIntArray(List<Int增eger>initList,int[]array,intsize,Setres){
booleanisEnd=外并较劳间绍团true;
if(array==null){
isEnd=false;
array=newint[size];
for(inti=0;i<size;i++){
array[i]=i;
}
}else{
for(inti=0;i<size;i++){
if(array[size-i-1]+i+1>initList.size()-1){
continue;
}else{
array[size-i-1]=array[size-i-1]+1;
if(i!=0){
for(intj=size-i;j<size;j++){
array[j]=array[size-i-1]+1+j+i-size;
}
}
isEnd=false;
break;
}
}
}
if(isEnd){
return;
}
int[]result=newint[size];
for(inti=0;i<array.length;i++){
result[i]=initList.get(array[i]);
}
System.out.println(Arrays.toString(result));
res.add(result);
getNextIntArray(initList,array,size,res);
}
标签:java,算法