计算数组中的任意个数字的和为某一个值的组合

问题:

有1,3,2,4,5这几个数字,把这几个数相加结果等于6 
结果可以是 
1,3,2 
2,4 
1,5 

实现:

public Map get(int result, Map<String, Object> map, boolean flag) {

        int array[] = new int[]{1, 3, 2, 4, 5};
        for (int i = 0; i < array.length; i++) {
            int value = result - array[i];

            if ((value != array[i] || flag) && value > 0) {
                for (int j = 0; j < array.length; j++) {
                    if (value == array[j]) {
                        if (!map.containsKey(String.valueOf(array[i])) && !flag) {
                            map.put(String.valueOf(value), array[i]);
                        } else if (flag) {
                            if (result > array[i] && array[i] > array[j]) {
                                map.put(result + " " + array[i], array[j]);
                            }
                        }
                    } else {
                        int two = value - array[j];
                        if (two > 0) {
                            if (value + array[j] < 6) {
                                get(two, map, true);
                            }

                        }

                    }
                }
            }

        }
        return map;
    }

 

posted on 2016-11-19 11:01  醉清风JM  阅读(2571)  评论(0编辑  收藏  举报

导航