所以我有一个带有n个数字元素的向量。我想用这些元素制作m位数字。 m和n将由用户给出。
例如:
如果原始矢量是{0,1,2,3,4,5,6,7,8},我希望新矢量为{012,345,678}。
因此,我们现在有3个三位数元素,而不是9个一位数元素。用户再一次给出n和m的值。
现在我已经能够通过将元素转换为字符串并附加它们来实现此目的。但问题是阵列大小需要非常大(大约300万长)。
当我将逻辑用于这个长值时,编译需要很长时间。这就是我目前所拥有的。
vector<string> list_generator(int *array,int m, int combinations)
{
string ryan, temp;
stringstream aStream;
vector<string> lexicographic;
while (next_permutation(array, array + m))
{
for (int i = 0; i < m; i = i + m)
{
for (unsigned int j = i; j < m+ 1; j++)
aStream << array[i];
temp = aStream.str();
ryan.append(temp);
aStream.str("");
}
lexicographic.push_back(ryan);
ryan.clear();
}
return (lexicographic);
}
有没有更快的方法来做到这一点。