我一直在寻找如何提出可以应用笛卡尔积的代码段。假设我有两个数组:
int M[2]= {1,2};
int J[3] = {0,1,2};
因此,代码将采用这两个数组应用规则M X J
因此我们将有(1,0)(1,1)(1,2)(2,0)(2,1)(2,2)对,我希望将新结果保存到新数组中,其中数组中的每个索引都包含一对,例如c [0] =(1,0)。
请帮忙 :(
最佳答案
这是一个使用 vector 实现笛卡尔积的简单示例。 vector 是更好的选择,因为我们不必担心它的大小,因为它会动态更改它。
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
int main() {
int M[2]= {1,2};
int J[3] = {0,1,2};
vector<pair<int,int>> C;
for (int i = 0; i < sizeof(M)/sizeof(M[0]); i++)
{
for (int j = 0; j < sizeof(J)/sizeof(J[1]); j++)
{
C.push_back(make_pair(M[i],J[j]));
}
}
/*
for (vector<int>::iterator it = C.begin(); it != C.end(); it++)
{
cout << *it << endl;
}
*/
for (int i = 0; i < C.size(); i++)
{
cout << C[i].first << "," << C[i].second << endl;
}
}
这是我实现上述代码的link。尽管我不会发布与您的问题直接相关的解决方案,但评论中发布的链接已经包含答案,这就是我发布原因的原因。
关于c++ - C++中的笛卡尔积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29451291/