我想要得到列表元素的每個排列組合。我試圖通過在兩個列表之間混洗這些元素並檢查list2
的迭代來完成此操作。我想通過遞歸得到每個列表元素的排列
雖然有些不對。你能幫我解決我的問題嗎?
void iterlist(list<int>& Lit)
{
list<int>::iterator it;
for (it=Lit.begin(); it!=Lit.end(); it++)
cout << " " << *it;
cout << endl;
}
void permutations(list<int>& L1, list<int>& L2)
{
L2.push_back(L1.front());
L1.pop_front();
if(!L1.empty())
{
permutations(L1, L2);
}
L1.push_back(L2.back());
L2.pop_back();
iterlist(L2);
}
我是測試它的L1 = 1,2,3,4,5
元素,唯一的排列我得到的是:1 2 3 4 5
和5 4 3 2 1
。
你的代碼不編譯(前見LU在您置換功能的尾巴)。另外,您可能想要反思遞歸算法的一個關鍵屬性:*使用堆棧保存遞歸狀態*,以及您可能會做錯的事情導致失敗。 – WhozCraig
我忘了更改參數名稱,現在它在VS2010中編譯:] – pawel
Craig是正確的... 1>。\ test.cpp(31):錯誤C2065:'LU':未聲明的標識符 – Caribou