我有一系列结构
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,5 0,6 1,5 1,6 2,5 2,6
¿如何在C?
中为N尺寸的选项数组实现此功能?for(i=0; i<n; i++){
....
}
答案 0 :(得分:0)
一些伪代码(实际上是Kalkulon代码)可以简单地转换为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
)
);
输出:
{0, 5}
{1, 5}
{2, 5}
{0, 6}
{1, 6}
{2, 6}