首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向量中的向量

向量中的向量
EN

Stack Overflow用户
提问于 2011-10-20 11:59:07
回答 5查看 321关注 0票数 0

我让这个code...that做了我需要它做的事情。它在一个预定义的int数组中搜索两个相加为目标int的int。但是,当将值放入向量中时,而不是将它们放在单元格中,它会将所有值放在一起。例如,对于整型数组50、40、30、20、10和目标50,它不返回[5030,20...etc.],而是打印[50,40,10,30,20...etc.]我该如何解决这个问题呢?

代码语言:javascript
运行
复制
public Vector<Vector<Integer>> subsetSum(int[] array, int target) {
    //creates vectors, adds inner vector to another vector
    outer = new Vector<Vector<Integer>>();
    inner = new Vector<Integer>();
    outer.add(inner);

    for (int k = 0; k < array.length; k++) {
        for (int l = 1; l < array.length; l++) {
            int sum = array[k]+array[l]; //sum of l and k
            if (sum == target) {
                //add l,k to vector
                inner.add(array[l]);
                inner.add(array[k]);
                //prints l and k if their sum equals target
                System.out.println(array[l]+"+"+array[k]+"="+target);
            }
            else {
                System.out.print("");
            }
        }
        //if k is the target, display
        if (array[k] == target) {
            //add k to vector
            inner.add(array[k]);
            //prints if int equals target
            System.out.println(array[k]+"="+target);
        }
    }
    //return combinations that add up to target in vector form
    return outer;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-20 12:10:50

您只需向outer添加一个向量。情况不是这样的吗?如果你找到一对加起来等于所需和的对,你不是想把它们放在一个不同的向量中吗?因此,当发生这种情况时,您需要创建一个新的“内部”向量,并将其添加到outer

删除以下行:

代码语言:javascript
运行
复制
inner = new Vector<Integer>();
outer.add(inner);

更改:

代码语言:javascript
运行
复制
if (sum == target) {
    inner = new Vector<Integer>();
    outer.add(inner)
    //add l,k to vector
    inner.add(array[l]);
    inner.add(array[k]);

和:

代码语言:javascript
运行
复制
if (array[k] == target) {
    inner = new Vector<Integer>();
    outer.add(inner)
    //add k to vector
    inner.add(array[k]);

最后,考虑将innerouter转换为局部变量。

票数 3
EN

Stack Overflow用户

发布于 2011-10-20 12:08:58

我认为你的错误在于首先在外部添加向量值,所以它只返回外部向量的所有值,而不是内部向量。必须在检查条件后添加

代码语言:javascript
运行
复制
    if (array[k] == target) {
        //add k to vector
        inner.add(array[k]);
        //prints if int equals target
        System.out.println(array[k]+"="+target);
    }
    outer.add(inner)
票数 0
EN

Stack Overflow用户

发布于 2011-10-20 12:10:24

移动这两行:

代码语言:javascript
运行
复制
inner = new Vector<Integer>();
outer.add(inner);

进入外部循环(带有索引变量k的那个循环)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7830992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档