我被要求寫一個使用遞歸的置換函數。該函數的唯一參數應該是我應該找到所有排列的字符串。該函數應該返回一個具有所有可能排列的向量。我知道我可以在STL算法中使用next_permutation
,但我被要求不要。編寫一個置換函數
我有基礎案例設置,我知道我需要一個for循環,但我不太確定從那裏去哪裏。有人能指引我朝着正確的方向嗎?
vector <string> getPerm(string str)
{
vector<string> v;
if(w.length() <= 1)
{
v.push_back(str);
return v;
}
else
{
for(int i = 0; i < str.size(); i++)
{
//Some code
}
}
}
任何幫助,將不勝感激。
這裏的一個[簡單的算法(http://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order)創建連續的排列,這可能會讓你開始 – Collin
@Collin我認爲這正是我需要的! – Sathed
如果你正在編寫一個使用遞歸的算法,你真的不想看看Collin的算法,也不想看'next_permutation',因爲它們都不是遞歸的。 –