当前位置: 首页>>代码示例>>C++>>正文


C++ TreeNode::StateToStr方法代码示例

本文整理汇总了C++中TreeNode::StateToStr方法的典型用法代码示例。如果您正苦于以下问题:C++ TreeNode::StateToStr方法的具体用法?C++ TreeNode::StateToStr怎么用?C++ TreeNode::StateToStr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TreeNode的用法示例。


在下文中一共展示了TreeNode::StateToStr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: end

void    astar(TreeNode &root)
{
    t_astar var;

    var.children = NULL;
    var.success = false;
    var.success2 = false;
    normalized2(*root.getState());
    TreeNode end(all.finalsnail);
    end.StateToStr();

    setNodeValues(end);
    end.setParent(NULL);
    root.StateToStr();
    var.pq_end.push(&end);
    var.opened_end.insert({end.getStringedState(), &end});
    while (!var.success2)
    {
        var.e = var.pq_end.top();
        var.e->StateToStr();
        if (var.e->getDepth() > 11 || var.e->getStringedState() == root.getStringedState()) {
            var.success2 = true;
        }
        else {
            var.pq_end.pop();
            var.e->setChildren(var.e->up(), 0);
            var.e->setChildren(var.e->down(), 1);
            var.e->setChildren(var.e->right(), 2);
            var.e->setChildren(var.e->left(), 3);
            var.closed_end.insert({var.e->getStringedState(), var.e});

            var.children = (TreeNode **) var.e->getChildren();
            if (var.children[0] != NULL) {
                astar3(var, 0);
            }
            if (var.children[1] != NULL) {
                astar3(var, 1);
            }
            if (var.children[2] != NULL){
                astar3(var, 2);
            }
            if (var.children[3] != NULL) {
                astar3(var, 3);
            }
        }
    }
    setNodeValues(root);
    var.pq.push(&root);
    var.opened.insert({root.getStringedState(), (&root)});
    while (!var.success && !var.pq.empty())
    {
        var.e = var.pq.top();

        var.e->StateToStr();
        if (var.e->getStringedState() == end.getStringedState()) {
            var.e->printree();
            std::cout<<"complexity_time / "<<all.complexity_time<<std::endl;
            std::cout<<"complexity_size / "<<var.closed.size() + var.closed_end.size()<<std::endl;
            std::cout<<all.nb_moves<<"nb_moves"<<std::endl;
            var.success = true;
            continue;
        }
        else {
            var.pq.pop();
            var.closed.insert({var.e->getStringedState(), var.e});
            var.e->setChildren(var.e->up(), 0);
            var.e->setChildren(var.e->down(), 1);
            var.e->setChildren(var.e->right(), 2);
            var.e->setChildren(var.e->left(), 3);

            var.children = (TreeNode **) var.e->getChildren();
            if (var.children[0] != NULL) {
                if (astar2(var, 0))
                    continue ;
            }
            if (var.children[1] != NULL) {
                if (astar2(var, 1))
                    continue ;
            }
            if (var.children[2] != NULL){
                if (astar2(var, 2))
                    continue ;
            }
            if (var.children[3] != NULL) {
                if (astar2(var, 3))
                    continue ;
            }
        }
    }
    if (var.pq.empty() && !var.success)
        std::cout<<"Solution not found!"<<std::endl;
}
开发者ID:arochard,项目名称:N-puzzle,代码行数:92,代码来源:astar.cpp


注:本文中的TreeNode::StateToStr方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。