所有可能的k列n行乘积组合

All possible product combinations with k columns and n rows for each

本文关键字:组合 有可能      更新时间:2023-10-16

我有几列数据,具有相同的行数,我想组合并获得它们之间所有可能的乘积组合。例如,如果a有4列a,B,C, D (n行),我想再增加11列,列积如下:

A*B 
A*C
A*D
B*C
B*D
C*D
A*B*C
A*B*D
A*C*D
B*C*D
A*B*C*D

我写了一个VBA和一个c++程序来获得所有的2x2乘积组合,但我被困在那里。

假设您的初始列少于32列,您可以这样做:

void print_new_combinations(const std::vector<std::string>& v)
{
    assert(v.size() < 32);// else you have to use bigger type.
    for (std::uint32_t i = 0; i < (1 << v.size()); ++i) {
        if ((i & (i - 1)) != 0) { // filter empty set or unique set
            print_combination(v, i);
        }
    }
}
void print_combination(const std::vector<std::string>& v, std::uint32_t mask)
{
    for (std::uint32_t i = 0; i != v.size(); ++i) {
        if ((mask & (1 << i)) != 0) {
            std::cout << " " << v[i];
        }
    }
    std::cout << std::endl;
}

现场演示