java实现排列组合输出

2025-12-25 09:54:39
推荐回答(1个)
回答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 results=new ArrayList();
        for(int i1=0;i1            for(int i2=0;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                        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                                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 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]]