首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的函数中生成数组元素的所有组合的错误是什么?

在我的函数中生成数组元素的所有组合的错误是什么?
EN

Stack Overflow用户
提问于 2016-02-15 03:21:59
回答 1查看 52关注 0票数 0

我正在尝试生成一个数组,其中包含整数数组的所有可能组合的数组;不包括空集和原始集本身。这是我写的代码。外部循环运行,直到要包括在子集中的元素数量等于原始集合中的元素数量。外部for循环运行以添加新子集的所有元素,外加一个额外的元素。例如,循环应该经历: A,B,然后添加C,然后添加D;生成A,B,C和A,B,D。然后,子集应该转移到B,C,并添加D,得到B,C,D。这个过程继续下去,直到创建了所有子集。然而,我得到了一个数组索引越界异常。

代码语言:javascript
复制
    double pow = Math.pow(2.0, a.length);
    char[][] b = new char[(int)pow-2][a.length-1];

    int start = 0;
    int end = 0;
    int includedElements = 1;
    int curI = 0;

    while(includedElements<=a.length) {

        if(end == a.length) {
            start = 0;
            includedElements+=1;
            end = includedElements-1;
        }

        for(int h = end+1; h<a.length; h++) {
            b[curI] = new char[includedElements];

            for(int i = start, index = 0; i<=end; i++, index++) {
                b[curI][index] = a[i];
            }

            b[curI][b[curI].length] = a[h];
        }
        curI++;

        start+=1;
        end+=1;
    }
EN

回答 1

Stack Overflow用户

发布于 2016-02-15 04:20:06

我认为你首先应该弄清楚你真正想要的是什么。组合和排列是有区别的(参见here)。当你知道这一点时,你可以在谷歌上搜索到确切的术语。我认为你想要的是没有重复的排列。这是一个可以递归求解的练习(example)。

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

https://stackoverflow.com/questions/35397017

复制
相关文章

相似问题

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