本文整理汇总了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;
}