Я использую Дейкстру, чтобы найти кратчайший путь для завершения определенной головоломки, где головоломка работает следующим образом.У вас есть пять цифр, которые могут быть в диапазоне от -4 до 4 (хотя они представлены по-разному, как "очень низкий / высокий" для -4/4, "низкий / высокий" для -3 до -1 или от 1 до 3и "завершено" для 0).Цель состоит в том, чтобы установить все пять на 0, используя 20 различных «техник», которые увеличивают / понижают значения шифра на заданную величину.Если метод изменяет один из цифр за пределами границ, то есть выше 4 или ниже -4, то вместо этого он ничего не делает.Итак, я представил его в виде графика, где узлами являются все возможные комбинации значений шифров, а начальным узлом является завершенный узел (0,0,0,0,0).Чтобы упростить задачу, я представляю шифры в виде значений от 0 до 8, где 4 является завершенным значением - это позволяет мне преобразовать их основание 9 в индексы массива графа, чтобы не тратить время на поиски.
Теперь у меня все получилось, я отлаживаю и пытаюсь выяснить, в чем дело, и, как правило, я разберусь с проблемой и исправлю ее, но эта проблема поставила меня в тупик,Я храню узлы, которые имеют определенное расстояние, но которые не были посещены в связанном списке, чтобы можно было легко посещать посещенные узлы.Когда связанный список попадает на 14256 узлов, он терпит неудачу - но он не может выполнить функцию free () для элемента связанного списка, который нужно вытолкнуть.Я не знаю, что может вызвать сбой функции free (), и я не нашел ничего, что могло бы помочь.
Я не задавал здесь никаких вопросов, поэтому не знаю этикета - я 'Я собираюсь поместить весь источник здесь, потому что я не знаю, что является и не имеет отношения к данной конкретной ситуации, но это около 140 строк, что довольно много.При дальнейшем просмотре выясняется, что на самом деле нет тега или чего-либо еще, поэтому я просто покажу его на кодовой панели.
http://codepad.org/I0K0ETsU
Редактировать: Хорошо.Хорошо.Теперь я полностью запутался.Я решил просто закомментировать это для хихиканья - и ничего больше не идет не так.Он заканчивается, выплевывает output.txt, и текстовый файл выглядит совершенно корректно.Я не могу понять, что, черт возьми, не так с кодом, который заставил бы его развалиться на free (), когда больше ничего не случилось.