java实现排列组合输出 5

集合a{1,2,3,5,7,10},输出不多于4个元素(不重复)的加和为22的组合。... 集合a{1,2,3,5,7,10},输出不多于4个元素(不重复)的加和为22的组合。 展开
 我来答
元虚成
2017-09-15 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:91
采纳率:33%
帮助的人:24.1万
展开全部

完成了一种实现,发给你参考下。

不过感觉应该还有更好的办法,有时间我会继续研究下.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestQiuhe {
    //集合a{1,2,3,5,7,10},输出不多于4个元素(不重复)的加和为22的组合。
    public static void main(String[] args) {
        int[] nums={1,2,3,5,7,10};
        int l = nums.length;
        List<int[]> results=new ArrayList<int[]>();
        for(int i1=0;i1<l;i1++){
            for(int i2=0;i2<l;i2++){
                if(nums[i1]==22){
                    results.add(new int[]{nums[i1]});
                }
                if(i2!=i1){
                    if(nums[i1]+nums[i2]==22){
                        results.add(new int[]{nums[i1],nums[i2]});
                    }
                    for(int i3=0;i3<l;i3++){
                        if(i3!=i1 && i3!=i2){
                            if(nums[i1]+nums[i2]+nums[i3]==22){
                                results.add(new int[]{nums[i1],nums[i2],nums[i3]});
                            }
                            for(int i4=0;i4<l;i4++){
                                if(i4!=i1 && i4!= i2 && i4!=i3){
                                    if(nums[i1]+nums[i2]+nums[i3]+nums[i4]==22){
                                        results.add(new int[]{nums[i1],nums[i2],nums[i3],nums[i4]});
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        //去重
        Set<String> reSet=new HashSet<>();
        for(int[] r:results){
            Arrays.sort(r);
            reSet.add(Arrays.toString(r));
        }
        System.out.println("一共得到结果集:"+reSet.size());
        System.out.println(reSet);
    }
}

运行结果:

一共得到结果集:2

[[5, 7, 10], [2, 3, 7, 10]]

匿名用户
2017-09-14
展开全部
String[]b=newString[a.length-1];for(inti=0;i
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式