Реализация самого сложного алгоритма: поиск кратчайшего пути для перемещения шарика.
Дата отправки отчёта:
23 января 2016 г.
Задание выполнено: за
4 час. 30 мин.
Чему научился:
Научился использовать алгоритм "Волна" для нахождения кратчайшего пути для перемещения шарика.
Что было сложным:
Увы, не все было понятно. Пока довольно сложно для меня. В середине ошибся в написании одного условия. Пришлось много времени потратить на поиск ошибки.
Комментарии:
Хотел бы поделиться с курсантами записью алгоритм "Волна " в псевдокоде (взял из Википедии). Может быть, это кому-то поможет лучше понять этот алгоритм.
Инициализация
Пометить стартовую ячейку 0 d := 0
Распространение волны
ЦИКЛ ДЛЯ каждой ячейки loc, помеченной числом d пометить все соседние свободные непомеченные ячейки числом d + 1 КЦ d := d + 1 ПОКА (финишная ячейка не помечена) И (есть возможность распространения волны)
Восстановление пути
ЕСЛИ финишная ячейка помечена ТО перейти в финишную ячейку ЦИКЛ выбрать среди соседних ячейку, помеченную числом на 1 меньше числа в текущей ячейке перейти в выбранную ячейку и добавить её к пути ПОКА текущая ячейка — не стартовая ВОЗВРАТ путь найден ИНАЧЕ ВОЗВРАТ путь не найден
Научился: Закрепила волновой алгоритм. Научилась анимировать перемещение шарика. Трудности: Найти, где забыла выделить память под массивы. Просмотрела, где в уроке выделяется память под массив path. Кстати, давно мучаюсь вопросом: как у C# дело обстоит с освобождением выделенной памяти?