获取矢量矢量的所有组合。到一个新的矢量

时间:2017-02-05 13:46:58

标签: c++ recursion vector

我正试图从矢量向量中提取int的所有组合。所以我使用了另一个主题中的函数:

void Phrase_Structuration::printAll(const vector<WORD_AND_TYPE> &allVecs, size_t vecIndex, int strSoFar)
{
    if (vecIndex >= allVecs.size())
    {
        cout << "FINISHED POSSIBILITY : ";
        cout << strSoFar << endl;
        return;
    }
    for (size_t i = 0; i<allVecs[vecIndex].types.size(); i++)
        printAll(allVecs, vecIndex + 1, strSoFar + allVecs[vecIndex].types[i]);
}

问题是我不打算打印可能的解决方案的添加,但我不想在新的矢量中: vector&lt;矢量&lt; WORDS_TYPE&GT; &gt;

WORD_AND_TYPE是字符串和枚举的结构(它是一个整数)。

WORDS_TYPE是枚举名称。

因此输出atm是:

68

74

74

我希望将添加的每个部分放在一个新的向量中,如:

vector.at(0)= {29,29,10}

vector.at(1)= {35,29,10}

vector.at(2)= {29,35,10}

等等。

如果有人可以帮助我,这将是非常棒的,因为递归对我来说是一种新的东西。如果您有任何疑问,请不要犹豫

编辑:

我已经做到了这一点,但这只做了半部分工作(它没有给出各种可能性)......

void Phrase_Structuration::printAll(const vector<WORD_AND_TYPE> &allVecs, vector<WORDS_TYPE> &tmpVector, vector<vector<WORDS_TYPE>> &phraseWordsTypesVector, size_t vecIndex, int strSoFar)
{
if (vecIndex >= allVecs.size())
{
    cout << "FINISHED POSSIBILITY : ";
    tmpVector.clear();
    cout << strSoFar << endl;
    return;
}
for (size_t i = 0; i < allVecs[vecIndex].types.size(); i++)
{
    //cout << "Vec : " << vecIndex << endl;     
    tmpVector.push_back(allVecs[vecIndex].types[i]);
    printAll(allVecs, tmpVector, phraseWordsTypesVector, vecIndex + 1, strSoFar + allVecs[vecIndex].types[i]);
    tmpVector.push_back(allVecs[vecIndex].types[i]);

    phraseWordsTypesVector.push_back(tmpVector);        
//  cout << "Vector : " << vecIndex << endl;
}

}

编辑2:以下是当前输出的屏幕截图:http://www.hostingpics.net/viewer.php?id=904380basicoutput.png

0 个答案:

没有答案