c++ - 增量数字变化循环? (所有排列)

标签 c++ arrays

我有一个数组,在给定以下约束的情况下,我需要该数组的所有可能排列:

可能的值为:0.25,0.5,0.75,1.0,1.25,1.5,1.75,2.0。

数组有 18 个元素。每个元素都可以包含上述值之一。允许重复,例如:0.25,0.25,0.5等...

我需要执行哪种类型的迭代来涵盖每个排列(而不是组合)?

for(...)
{
   std::vector<float> array;

   for(...)
   array.push_back...
}

etc

我的问题不寻求找到给定数组的所有排列:

我只想:

for example:
0.25 0.25 0.25
0.5 0.25 0.25
1.0 0.25 0.25
...
All the way to 
2.0 2.0 2.0

最佳答案

这是一个程序,可以将所有这些组合(请注意,它们太多了)打印到名为 combinations.txt 的文件中。但请注意,这需要一段时间,并且输出会很大,因为有很多这样的组合。至于它是如何工作的,这是一个快速而肮脏的解决方案,我有一个包含 18 个元素的 int 数组。我使用了 int,因为它更容易进行整数运算,但输出会通过除以 100 转换为您想要的格式。现在,应用程序打印出文件中的每个组合,然后将第一个数组元素递增 25 。如果元素超过 200(或 2.00 为你),它将该元素设置为 25,并将数组中的下一个元素递增 25。它就像计数一样工作,当你达到 9 时,第一个数字环绕并添加一个到下一个更高的权力。

#include <cstdio>
#include <cmath>

FILE *pOut;

void PrintCombinationToFile ( int *pArray )
{
    fprintf ( pOut,  "\n" );
    for ( unsigned i = 0; i < 18; i++ )
        fprintf ( pOut, "%.2f ", pArray[i] * 1.0 / 100.0 );
}


int IncrementArray ( int *pArray )
{
    unsigned i = 0;
    pArray[0] += 25;
    while ( pArray[i] > 200 )
    {
        if ( i == 18 )
            return 0;
        pArray[i] = 25;
        pArray[i+1] += 25;
        i++;
    }
    return 1;
}

int main()
{
    int initialArray[18];
    int i;

    pOut = fopen ( "combinations.txt", "w" );
    if ( !pOut )
    {
        printf ( "\nUnable to open a new file." );
        return 1;
    }

    for ( i = 0; i < 18; i++ )
        initialArray[i] = 25;

    PrintCombinationToFile(initialArray);

    while(IncrementArray(initialArray))
        PrintCombinationToFile(initialArray);

    fflush ( pOut );
    fclose ( pOut );
    printf ( "Done!")
    return 0;
}

关于c++ - 增量数字变化循环? (所有排列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640940/

相关文章:

arrays - ElasticSearch读取数组上的元素

javascript - 如何在 jQuery 中连接数组值但格式化它们?

c - 如何在 C 函数中返回超过 1 个值?

android - 从 android 中的字符串数组引用可绘制对象

c++ - 如何在另一种语言的后续分析中使用 C++ 库中的设备数据

c++ - 只是想知道是否有可能丢失数据?

c++ - 仅使用指针和两个非指针变量进行交换?

c++ - 是否有用于限制模板的成语/设计模式?

java - 从字节数组中的指定位置提取字节

c++ - 查找 std::wstring 的字符长度