2012-04-08 43 views
1

我有一個類,其中我想要生成的字符串的所有排列「123」麻煩與插入新元素插入載體,同時運行一個recursional函數

所以想要字符串「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]); 
     } 
    } 
    } 

如果範圍是0,那麼該集合將會有下一個排列。我想該排列存儲載體,但最終我的矢量是十足的「123」字符串

我不明白這是怎麼回事就在這裏

有人可以幫我嗎?

感謝

回答

0

我認爲這個問題是您要添加一個指向相同的字符串到載體多次,這意味着你的載體將多個指針存儲完全相同的字符串。由於您在遞歸內部改變了這個字符串,所以輸出將會是多次相同的字符串。

爲了解決這個問題,考慮將字符串的副本存儲在向量中,或者切換到像atd :: string這樣的類型,以便向該向量添加字符串實際上爲您創建副本。

希望這會有所幫助!

+0

謝謝,確實是這個問題;) – jan1 2012-04-08 22:39:57