gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:05:43 26 4
gpt4 key购买 nike

我正在尝试使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com