小编ham*_*lik的帖子

从一个总和等于零的集合中找到一个子集?

我有一组像这样的整数

{1,4,5,2,7,8,-3,-5,-6,9,3,-7,-1,5,6} 
Run Code Online (Sandbox Code Playgroud)

该集合可以包含任意数量的项目,因为输入是从用户那里获取的,我需要从该集合中找到所有可能的子集,其总和等于零,例如在这种情况下,在上面的集合中,子集将是

{(1,2,-3)}

{(1,-1)}

{(3,-3)}

{(5,-5)}

等等

我已经尝试过这段代码,但是当我设置target为零时,它并没有给我回答.

import java.util.ArrayList;
import java.util.Arrays;

class SumSet {

    static void sum_up_recursive(ArrayList<Integer> numbers, int target,
                                 ArrayList <Integer> partial)
    {
        int s=0;
        for (int x: partial) s += x;
        if (s == target)
            System.out.println("sum("+Arrays.toString(partial.toArray())+")="+target);

        if (s >= target)
            return;

        for(int i=0;i<numbers.size();i++) {
            ArrayList<Integer> remaining = new ArrayList<Integer>();
            int n = numbers.get(i);
            for (int j=i+1; j<numbers.size();j++) remaining.add(numbers.get(j));
            ArrayList<Integer> partial_rec = new ArrayList<Integer>(partial);
            partial_rec.add(n);
            sum_up_recursive(remaining,target,partial_rec);
        }
    }

    static void sum_up(ArrayList<Integer> numbers, int target) 
    { …
Run Code Online (Sandbox Code Playgroud)

java

6
推荐指数
1
解决办法
2413
查看次数

标签 统计

java ×1