C 查找n组k元素的所有组合
我有一个结构数组C 查找n组k元素的所有组合,c,algorithm,loops,combinations,C,Algorithm,Loops,Combinations,我有一个结构数组 typedef struct st1 { double start; double step; double stop; } ST; 我需要一步一步地找到这些优化参数的所有可能组合 例如: array[0].start = 0 array[0].step = 1 array[0].stop = 2 array[1].start = 5 array[1].step = 1 array[1].stop = 6 这些组合将是: 0,50,61,51,62,52,6
typedef struct st1
{
double start;
double step;
double stop;
} ST;
我需要一步一步地找到这些优化参数的所有可能组合
例如:
array[0].start = 0
array[0].step = 1
array[0].stop = 2
array[1].start = 5
array[1].step = 1
array[1].stop = 6
这些组合将是:
0,50,61,51,62,52,6
?如何在C语言中实现N大小的选项数组
for(i=0; i<n; i++){
....
}
对于(i=0;i一些可以简单转换为C代码的伪代码(实际代码):
::array={{0,1,2},{5,1,6}},
::N=Size(array),
::combination={0,0},
comb()=
(
n=0,
do(
finishCtr = 0,
i = n,
for(j = 0; j < N; j++; // do
maxsteps=(array[j,2] - array[j,0]) / array[j,1] + 1,
steps = i % maxsteps, // modulo
i = ip(i / maxsteps), // integer division
elem = array[j,0] + steps * array[j,1],
if(i > 0 && steps == 0; finishCtr++),
combination[j] = elem
),
// print result if not already all combinations are done
if(finishCtr < N; PrintLn((string)combination)),
n++
; // do-while
finishCtr < N
)
);
嗯……我已经解决了固定数组大小时嵌套循环的类似问题。问题是数组大小是可变的。我不是在寻找实现,而是寻找如何实现它的线索。无论如何感谢你的评论。我希望我还在做作业,但那是很久以前的事了;)可能是@JimMischel的复制品:可能是复制品,但不是那篇文章的复制品。这一个似乎是关于排列而不是组合,OP的标题和令人困惑的术语使用。
{0, 5}
{1, 5}
{2, 5}
{0, 6}
{1, 6}
{2, 6}