我有一个类,我想生成字符串“123”的所有排列
所以我想要字符串“123”,“321”,“132”等
在这堂课中我定义了一个 向量 这将保留我以后想要使用的所有这些字符串...
这是我用来查找所有排列的递归:
findPermutations(char *set, int begin, int end){
int i;
int range = end - begin;
if(range == 0) myvE.push_back(set); //notice how I want to update the vector
else{
for(i=0;i<range;i++){
swap(set[begin],set[begin+i]);
findPermutations(set,begin+1,end);
swap(set[begin],set[begin+i]);
}
}
}
如果range为0,则该集合将具有下一个排列。我想将这个排列存储在向量中,但最后我的向量中充满了“123”字符串
我无法理解这里发生了什么
有人可以帮帮我吗?感谢
答案 0 :(得分:0)
我认为问题在于你多次向向量添加一个指向同一个字符串的指针,这意味着你的向量将存储多个指向完全相同字符串的指针。因为你在递归中改变了这个字符串,所以输出将是多次相同的字符串。
要解决此问题,请考虑将字符串的副本存储在向量中,或者切换到类似atd :: string的类型,以便将字符串添加到向量实际上为您创建副本。
希望这有帮助!