递归回溯算法的迭代算法

时间:2014-02-14 17:25:08

标签: c++ algorithm recursion iteration

我遇到了迭代回溯算法的问题。我做了一个带迭代函数的项目,一切正常,但我希望代码更快,我认为递归比迭代更好。

现在,我尝试将递归函数转换为迭代函数,但我失败了。这是代码,任何人都可以帮助我吗?

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;
}

0 个答案:

没有答案