一种数组集合内元素组合实现(带排序)

例:数组内共有元素1,2,3,4,5,6  共6个元素,需要得到N个元素组合所有结果,且值按位数递增,如 1234,1345,1356,5613(不符合要求),如何实现?

代码如下:

public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
ss(4,0,0,list,"");//4为组合维度值,可自由设置

}

public static void ss(int n,int m,int a,List<String> list,String str){
//n 维度大小,m 当前值偏移量,a为当前维度值

//System.out.println("构造方法入口,n:"+n+",m:"+m+",a:"+a);
for(int i = m; i< list.size();i++){
String aa = str+list.get(i)+",";
a++;

if(n-a > list.size() - i -1){
break;
}
if(a >= n){
System.out.println("一组数据完成,结果:"+aa+". n:"+n+",m:"+m+",a:"+a);
a--;
aa = str;
if(i == list.size() - 1){
break;
}
}else{
// System.out.println("一组数据继续构造,当前:"+aa+". n:"+n+",m:"+m+",a:"+a);
ss(n,i+1,a,list,aa);
a--;
}
}
}
}

运行结果如下

一组数据完成,结果:1,2,3,4,. n:4,m:3,a:4
一组数据完成,结果:1,2,3,5,. n:4,m:3,a:4
一组数据完成,结果:1,2,3,6,. n:4,m:3,a:4
一组数据完成,结果:1,2,4,5,. n:4,m:4,a:4
一组数据完成,结果:1,2,4,6,. n:4,m:4,a:4
一组数据完成,结果:1,2,5,6,. n:4,m:5,a:4
一组数据完成,结果:1,3,4,5,. n:4,m:4,a:4
一组数据完成,结果:1,3,4,6,. n:4,m:4,a:4
一组数据完成,结果:1,3,5,6,. n:4,m:5,a:4
一组数据完成,结果:1,4,5,6,. n:4,m:5,a:4
一组数据完成,结果:2,3,4,5,. n:4,m:4,a:4
一组数据完成,结果:2,3,4,6,. n:4,m:4,a:4
一组数据完成,结果:2,3,5,6,. n:4,m:5,a:4
一组数据完成,结果:2,4,5,6,. n:4,m:5,a:4
一组数据完成,结果:3,4,5,6,. n:4,m:5,a:4
 

符合要求!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值