c – 几种载体的笛卡尔积

之前已经提出了类似的问题,但我找不到与我的问题完全匹配的问题.

我有4个向量,每个向量保持200-500个4位整数.每个向量中元素的确切数量各不相同,但我可以将其修复为特定值.我需要找到这4个向量中所有元素的可能组合.

例如:

v1 [10,30]
v2 [11,45]
第3节[63,56]
第4节[82,98]

所以我会得到这样的东西:

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

这个算法有一个共同的名称,所以我可以在网上找到一些参考吗?否则,在C中实现此功能的任何提示都会有所帮助.性能不是问题,因为我只需要运行一次算法. STL中是否有任何内置功能?

解决方法:

算法不多…

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;
上一篇:php – 没有重复的所有子数组元素的组合


下一篇:python – 制作列表的所有可能组合