c++ - 在 C++ 自定义树的一些迭代后崩溃

标签 c++ algorithm c++11 tree sliding-tile-puzzle

我正在编写一个简单的滑动方 block (3x3) 求解器。 这肯定不是最好的方法,我只是生成所有可能的配置,但我不知道为什么在执行过程中我的电脑卡住,我必须手动重启。 这是主循环

while(!(tree->s==final))
{ 
    //copy it in tree   

    expand_node(tree);
    //check if in open then add if not
    it++;
}      
print_s(tree->s);

PS:我用

编译了一切
g++ -Wall -Wextra -std=c++11 main.cpp

最佳答案

在您要添加到列表的基于循环的范围内:

for(auto v : open)
    if(!(v.s==tree->childs[i].s))
        open.push_back(tree->childs[i]);

这将导致列表增长并触发另一次迭代,直到您机器上的所有内存都用完。当您的操作系统将内存交换到磁盘时,您的机器可能不会卡住,只会变得非常慢。

关于c++ - 在 C++ 自定义树的一些迭代后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52823987/

相关文章:

c++ - 线性插值以找到三角形中的坐标

c++ - 广度优先搜索中的问题

algorithm - 未知算法名称

c++ - 在函数调用中,为什么 nullptr 不匹配指向模板对象的指针?

c++ - 按类型构造一个 std::mem_fn

C++ 从数组中取出前 n 个元素

c++ - 使用 boost multi_index_container 来保留插入顺序

c++ - 是否有 STL 算法来查找序列中值的最后一个实例?

c++ - 使用鼠标滚轮缩放 QChartView 的 x 轴

algorithm - 找出给定数字的最大有效字符串组合数