几个向量的笛卡尔乘积几个向量的笛卡尔乘积(Cartesian product of several

2019-05-12 11:59发布

以前类似的问题已经被问,但我不能找到完全匹配的,以我的问题。

我有4个矢量的每一个保持在200-500 4之间的数字的整数。 元件中的每个向量的确切数目而变化,但我可以将其固定到一个特定的值。 我需要找到这4个向量元素的所有可能的组合。

例如:

V1 [10,30] v2的[11,45] v3的[63,56] V4 [82,98]

所以我得到这样的:

[10,11,63,82]; [30,11,63,82]; [10,45,63,82]; [10,45,56,82]等。

是否有这个算法的通用名称,所以我可以在网上找到它的一些参考? 否则,就用C实现这个任何提示++将是有益的。 性能是不是一个问题,因为我只需要运行一次算法。 是否有内置的STL什么?

Answer 1:

没有太多的算法的...

for(vector<int>::const_iterator i1 = v1.begin(); i1 != v1.end(); ++i1)
    for(vector<int>::const_iterator i2 = v2.begin(); i2 != v2.end(); ++i2)
        for(vector<int>::const_iterator i3 = v3.begin(); i3 != v3.end(); ++i3)
            for(vector<int>::const_iterator i4 = v4.begin(); i4 != v4.end(); ++i4)
                cout << "[" << *i1 << "," << *i2 << "," << *i3 << "," << *i4 << "]" << endl;


文章来源: Cartesian product of several vectors