我正在尝试为一组趋势线分配一组权重。权重在数组中,趋势线在数组中。我想以所有排列结束:即,数组中的每个趋势线都被分配了每个权重。在我的代码中,我目前得到这个输出:
output: 1 combination per line:
1.00, 1.00, 1.00, 1.00
1.50, 1.50, 1.50, 1.50
2.00, 2.00, 2.00, 2.00,
但我想要得到的是所有排列,不包括重复项。那就是我想获得权重/趋势线的所有不同可能组合:
output: 1 combination per line:
1.00, 1.00, 1.00, 1.00
1.50, 1.00, 1.00, 1.00,
2.50, 1.00, 1.00, 1.00,
1.00, 1.50, 1.00, 1.00,
1.50, 1.50, 1.00, 1.00,
2.50, 1.50, 1.00, 1.00,
....etc
编辑:
所以我的问题是:如何更改下面的代码,以便生成趋势线和权重的所有不同组合。例如,如果我有 2 个趋势线和 3 个权重 (1,2,3),则所有组合将是:
1,1
1,2
1,3
2,1
2,2
2,3
3,1
3,2
3,3
这是代码:
#define TRENDLINE_COUNT 4
#define WEIGHT_COUNT 3
void hhour(void)
{
int trendLine[TRENDLINE_COUNT];
double weight[] = { 1, 1.5, 2 };
FILE *myFile = fopen("s:\\data\\testdump\\ww.txt", WRITE);
fprintf(myFile, "output: 1 combination per line :\n" );
for (int weightIndex = 0; wei`enter code here`ghtIndex < WEIGHT_COUNT; weightIndex++)
{
double currentWeight = weight[weightIndex];
double cumulativeTrendValue = 0;
for (int trendLineIndex = 0; trendLineIndex < TRENDLINE_COUNT; trendLineIndex++)
{
cumulativeTrendValue += trendLine[trendLineIndex] * currentWeight;
fprintf(myFile, "%.02lf, ", currentWeight);
}
fprintf(myFile, "\n");
// do something with cumulativeTrendValue
}
fclose(myFile);
}