2

以前也有人问过类似的问题,但我找不到与我的问题完全匹配的问题。

我有 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 中有内置的东西吗?

4

1 回答 1

12

算法不多……

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;
于 2010-03-08T22:27:43.843 回答