Другие языки программирования и технологии

Подскажите пожалуйста. Может есть действительно сильные программеры. Вобщем дан 2-мерный массив.

Ну, собственно, говоря, нолики - это вершины графа. Если два нолика рядом по горизонтали или диагонали, то вершины графа смежные. Ну и вперед, работать с графом. Вопрос вот в чем: в данном случае длина каждого ребра графа будет равна единице. То есть, по большому счету, алгоритм Дейкстры будет тем самым волновым поиском, от которого вы отказываетесь.

Я бы не стал заморачиваться с созданием графа при помощи указателей и реализовал программу так:

1. Создаем массив X того же размера из целых чисел. В нем будем отмечать длины пути.
2. Создаем динамический массив M, в котором будем хранить текущее положение (можно обойтись без массива - тут на любителя) .
2. Стартуем из нужной точки, в X в эту точку пишем 0, добавляем координаты этой точки в M.
3. Для каждой точки T из массива M проверяем наличие проходов в 4 стороны по лабиринту. Для каждого существующего прохода записываем в массив X в эту точку значение из точки T плюс один, добавляем эту точку в массив M, а T оттуда, соответственно, удаляем.
4. После n-той итерации пункта 3 в массиве M у нас будут точки, удаленный от изначальной на расстояние n, т. е. , фактически, нами реализован волновой поиск.
5. Проверяем наличие конечной точки среди массива M. Если она там есть, то длина кратчайшего пути - это значение массива X в этой точке. При этом поиск можно прекращать (здесь идет важное отличие от классического алгоритма Дейкстры, т. к. у нас длины всех ребер равны единице и никогда путь с большим кол-вом ребер не будет короче пути с меньшим кол-вом) .
6. Если в определенный момент массим М пустой, значит, такого пути вообще нет.
7. Если еще нет конечной точки в массиве М, то возвращаемся к пункту 3.

Вроде, все.
МР
Мурад Рамазанов
4 971
Лучший ответ
А скажите, зачем вам это ???
Федор Анохов
Федор Анохов
50 017
И дальше что? Что делать то с массивом ентим?
P.S. Комменты не читаю.
"10000*10000"?
Тот же волновой метод, но задаёшь шаблон минимального кол-ва нулей как 10000 - т. е. прямая на выход из лабиринта. И параметр волны первый заход 10000, не вышел, второй заход 10001, третий заход 10002 и т. д. в 4-5 приёмов выскочит.
AA
Akmal Atajanov
2 810
не сильный я прогер. Но могу придумать какую нить херь с ходу даже.... не зря же Самитову сдавал.
тока знаю я Паскаль-- Делфи.... Могу немного подсказать со строением проги если надо.... делать все равно не фиг....
И что?