C++,数组元素不按顺序组合

标签 c++ algorithm math combinations nested-loops

我正在尝试使用 C++ 获取数组的所有组合

double* list1 = new double[size];

该数组中的项目是 {1,2,3,4,5}

我需要将所有可能的组合添加到一个堆栈中,例如:

1+2, 1+2+3, 1+2+3+4,1+2+3+4+5, 1+3, 1+3+4, 1+3+4+5, 1+4, 1+4+5, 1+5...

我遇到的问题是我正在通过 2 个 for 循环和一个 while 循环执行此操作

for(int i = 0; i < size - 1; i++)
{
    for(int j = i; j < size - 1; j++)
    {
        double temp = list1[i] + list1[j + 1];
        list1combos.push(temp);
        int k = j + 2;
        while (k <= size - 1)
        {
            temp = temp + list1[k];
            list1combos.push(temp);
            k++;
        }
    }
}

我可以得到上面列出的那些,但我不知道如何组合编码,例如 1+3+51+2+5

请告知如何获得这些组合,谢谢 stackoverflow!

最佳答案

由于顺序无关紧要,我建议使用与您的 x 大小相同的数组并对其执行二进制增量,即您从仅初始化为 的数组开始0 并计数,直到您只有 1。每增加一个 1,您就会从 x 数组中选择一个排列。

First iteration:
0 0 0 0 0 -> empty
Second iteration:
0 0 0 0 1 -> you pick 5
3rd iteration:
0 0 0 1 0 -> you pick 4
4th iteration:
0 0 0 1 1 -> you pick 4 and 5
And so on until you reach:
1 1 1 1 1 -> you pick 1, 2, 3, 4 and 5

关于C++,数组元素不按顺序组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24126368/

相关文章:

algorithm - 压缩文件文件夹的最有效算法

javascript - 在 25000 步中将更大的数字映射到 1-4

MySQL帮助,根据计算更新字段

c++ - 按值返回时强制 RVO/移动构造

java - 迭代拓扑搜索(DFS)

c++ - 实时 2D 渲染到系统内存

python - 我的 codejam 练习的解决方案或输出方法有什么不正确的地方?

c# - 具有不同内核的指数移动平均线

c++ - 为什么 C++ 不能用 "derived class"类型的右值初始化 "super class"类型的变量?

c++ - 尝试将注册表写入 HKLM 改为写入 HKCR