java算法请输入一个数组(1,2,3,5,7,11,13,17,19,23,29,31)12个元

java算法请输入一个数组(1,2,3,5,7,11,13,17,19,23,29,31)12个元素,取出4个元素的所有组合(算出有多少组合),值为40至47,并且组合不能重复,请用java编程。我是记事本

@Test
    public void name() {
        int[] arr = { 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 };
        int sum = 0;
        int count = 0;
        //循环变量这样设置就不要考虑重复问题了。
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                for (int k = j + 1; k < arr.length; k++) {
                    for (int m = k + 1; m < arr.length; m++) {
                        sum = arr[i] + arr[j] + arr[k] + arr[m];
                        if (40 <= sum && sum <= 47) {
                            count++;
                            System.out.println(arr[i] + "," + arr[j] + ","
                                    + arr[k] + "," + arr[m] + "=" + sum);
                        } else if (sum > 47) {
                            //如果值大于47就不用循环了,后面的值一定大于47,所以就跳到外层循环
                            break;
                        }
                    }
                }
            }
        }
        System.out.println(count);
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-21
4个for循环套一起,每一次去重,最后一层算和
第2个回答  2015-11-21
怎么老是有这种问题啊!不知道不会啊!追问

嘻嘻

大神是我弱智

家条件了

追答

以后不会的问题就不要问我了,我也不会~

追问

大神 费心了

第3个回答  2015-11-21
可以给个例子么?比如:输入什么;输出什么追问

输出

4个元素所有组合

每个组合的和等于40至47

不能有重复的组合

13 17 5 11

2 3 11 23

但是
17 13 5 11

就和上面的重复了

符合条件的这种组合 有多少

大神 能帮忙不

追答

也就是说每个数组中不能有相同的数字么

比如有了{1,2,3,5}不能有{1,3,4,5}对吧

追问

这样可以

就是1 2 3 5

不能有5231

这两组 组合和相等

数组元素也一样

大神

运行后 dos里面弄不下

相似回答