алгоритм — сбой после некоторой итерации пользовательского дерева c ++

Я пишу простой скользящий тайл (3х3) решатель.
Конечно, это не лучший подход, я просто генерирую все возможные конфигурации, но я не знаю, почему во время выполнения мой компьютер зависает, и я должен вручную перезагрузиться.
это основной цикл

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

0

Решение

Внутри вашего диапазона, основанного на циклах, вы добавляете в список:

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

Это приведет к увеличению списка и запуску другой итерации, пока вся память на вашем компьютере не будет исчерпана. Ваша машина, вероятно, не зависает, просто становится очень медленной, в то время как ваша операционная система подменяет память на диск.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector