【发布时间】:2010-12-14 13:53:31
【问题描述】:
我有几个看起来像这样的数据:
Vector1_elements = T,C,A
Vector2_elements = C,G,A
Vector3_elements = C,G,T
..... up to ...
VectorK_elements = ...
#Note also that the member of each vector is always 3.
我想要做的是创建 Vector1 到 VectorK 中的所有元素组合。 因此最终我们希望得到这个输出(使用 Vector1,2,3):
TCC
TCG
TCT
TGC
TGG
TGT
TAC
TAG
TAT
CCC
CCG
CCT
CGC
CGG
CGT
CAC
CAG
CAT
ACC
ACG
ACT
AGC
AGG
AGT
AAC
AAG
AAT
我现在遇到的问题是我的以下代码通过对循环进行硬编码来做到这一点。 由于向量的数量可以变化,我们需要一种灵活的方法来获得相同的结果。 有吗?
我的这段代码最多只能处理 3 个向量(硬编码):
#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
using namespace std;
int main ( int arg_count, char *arg_vec[] ) {
vector <string> Vec1;
Vec1.push_back("T");
Vec1.push_back("C");
Vec1.push_back("A");
vector <string> Vec2;
Vec2.push_back("C");
Vec2.push_back("G");
Vec2.push_back("A");
vector <string> Vec3;
Vec3.push_back("C");
Vec3.push_back("G");
Vec3.push_back("T");
for (int i=0; i<Vec1.size(); i++) {
for (int j=0; j<Vec2.size(); j++) {
for (int k=0; k<Vec1.size(); k++) {
cout << Vec1[i] << Vec2[i] << Vec3[k] << endl;
}
}
}
return 0;
}
【问题讨论】:
-
您想如何处理重复项?即,如果第四个向量与第三个向量相同?另外:您的输入向量的长度为 3,但您的输出向量的长度应为“k”(如果给出了 k 个输入向量)?或者您如何决定从哪个输入向量中获取哪些元素?
标签: c++ algorithm recursion vector combinations