我遇到了迭代回溯算法的问题。我做了一个带迭代函数的项目,一切正常,但我希望代码更快,我认为递归比迭代更好。
现在,我尝试将递归函数转换为迭代函数,但我失败了。这是代码,任何人都可以帮助我吗?
bool solve ( vector<char> & sol, vector<char> & nodi2, vector<vPtr> & a) {
unsigned x=0;
while( x < nodi2.size() )
{
if (canAdd (nodi2[x],sol,a) )
{
sol.push_back(nodi2[x]);
if( sol.size() == nodi2.size() )
if (isComplete(sol,nodi2,a) ) return true;
if (solve (sol,nodi2,a) ) return true;
else {
sol.pop_back();
x++;
}
}//if
else {
x++;
}
}//while
return false;
}