Страница 1 из 1

Задача на матрицу и кратчайший путь.

Добавлено: 16 дек 2007, 05:36
H[o][o]K
Привет всем. Помогите пожалуйста решить задачку, а то застопорился я на ней.

"Движение плота"
Квадратное озеро, покрытое многочисленными островами, задаётся матрицей, размером NxN. Каждый элемент матрицы - либо символ '#' - решётка, обозначающий остров, либо '0' - ноль, обозначающий участок воды. В верхнем левом углу озера находится квадратный плот размером MхM клеток(попросили сделать 1х1 клетку). За один шаг плот может перемещаться на одну клетку по горизонтали или вертикали.
Составить алгоритм-программу для определения минимального числа шагов, за которое плот может достигнуть правого нижнего угла озера. Входной файл исходных данных содержит числа N и M. В следующих N строках располагается матрица, представляющая озеро. Выходной файл должен содержать единственное число - количество необходимых шагов. Если правого нижнего угла достичь невозможно, то выходной файл должен содеражть число -1(минус один).

Re: Задача на матрицу и кратчайший путь.

Добавлено: 17 дек 2007, 11:10
Хыиуду
А... маршрутизация графа.
Короче, создается матрица NxN. Потом во все клетки, соседние с клеткой начала, записывается единица. Потом во все клетки, соседние с единицами записывается двойка, и т.д. (цифра в клетке показывает, за сколько шагов можно дойти до этой клетки). Если одна и та же незаполненная клетка находится рядом с двумя заполненными - она заполняется как меньшее значение из них +1. Например, если клетка находится рядом с 3 и 8, в нее записывается 4 (это 3+1).
Потом, если не осталось клеток рядом с заполненными, а клетка, до которой надо добраться, не заполнена - пути нет. В противном случае в искомой клетке будет ответ.